Changeset 348


Ignore:
Timestamp:
Apr 3, 2010, 1:53:09 PM (12 years ago)
Author:
dmik
Message:

branches/kmk: Ignore field types we don't support.

Location:
branches/kmk/Lucide/gui
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/kmk/Lucide/gui/docViewer.cpp

    r347 r348  
    6969#define DOC_ID_ENTRY    0
    7070#define DOC_ID_MLE      1
     71
     72void PageInputFields::fillCache( int i )
     73{
     74    LuInputField *field = fields->_buffer[ i ];
     75    Cache &entry = cache[ i ];
     76    entry.rect = field->getRectangle( ev );
     77    entry.type = field->getType( ev );
     78    entry.supported = false;
     79
     80    switch( entry.type ) {
     81        case LuInputField_Button: {
     82            LuInputButton *button = static_cast<LuInputButton *>( field );
     83            if ( button->getButtonType( ev ) != LuInputButton_Check )
     84                break;
     85            // so far, only check boxes are supported
     86            entry.supported = true;
     87            break;
     88        }
     89        case LuInputField_Text: {
     90            LuInputText *text = static_cast<LuInputText *>( field );
     91            if ( text->isReadOnly( ev ) )
     92                break;
     93            entry.supported = true;
     94            break;
     95        }
     96        case LuInputField_Choice:
     97        case LuInputField_Signature:
     98        default:
     99            // these are currently not supported
     100            break;
     101    }
     102}
    71103
    72104// DocumentViewer constructor
     
    19581990                    for ( int i = 0; i < inputFields[ pg ].fields->_length; i++ )
    19591991                    {
    1960                         LuRectangle *&rect = inputFields[ pg ].cache[ i ].rect;
    1961                         LuInputField_Type &type = inputFields[ pg ].cache[ i ].type;
    1962                         if ( rect == NULL ) {
    1963                             rect = inputFields[ pg ].fields->_buffer[ i ]->getRectangle( ev );
    1964                             type = inputFields[ pg ].fields->_buffer[ i ]->getType( ev );
    1965                         }
    1966 
    1967                         RECTL r = {0};
    1968                         docPosToWinPos( pg, rect, &r );
    1969 
    1970                         POINTL ptl = { xpos, ypos };
    1971                         if ( WinPtInRect( hab, &r, &ptl ) ) {
    1972                             WinSetPointer( HWND_DESKTOP,
    1973                                            type == LuInputField_Text ? textPtr : handPtr );
    1974                             return TRUE;
     1992                        PageInputFields::Cache &entry = inputFields[ pg ].cache[ i ];
     1993                        if ( entry.rect == NULL )
     1994                            inputFields[ pg ].fillCache( i );
     1995
     1996                        if ( entry.supported ) {
     1997                            RECTL r = {0};
     1998                            docPosToWinPos( pg, entry.rect, &r );
     1999
     2000                            POINTL ptl = { xpos, ypos };
     2001                            if ( WinPtInRect( hab, &r, &ptl ) ) {
     2002                                WinSetPointer( HWND_DESKTOP,
     2003                                               entry.type == LuInputField_Text ?
     2004                                               textPtr : handPtr );
     2005                                return TRUE;
     2006                            }
    19752007                        }
    19762008                    }
     
    20782110                for ( int i = 0; i < inputFields[ pg ].fields->_length; i++ )
    20792111                {
    2080                     LuRectangle *&rect = inputFields[ pg ].cache[ i ].rect;
    2081                     LuInputField_Type &type = inputFields[ pg ].cache[ i ].type;
    2082                     if ( rect == NULL ) {
    2083                         rect = inputFields[ pg ].fields->_buffer[ i ]->getRectangle( ev );
    2084                         type = inputFields[ pg ].fields->_buffer[ i ]->getType( ev );
    2085                     }
    2086 
    2087                     RECTL r = {0};
    2088                     docPosToWinPos( pg, rect, &r );
    2089 
    2090                     POINTL ptl = { xpos, ypos };
    2091                     if ( WinPtInRect( hab, &r, &ptl ) )
    2092                     {
    2093                         LuInputField *field = inputFields[ pg ].fields->_buffer[ i ];
    2094 
    2095                         switch ( type )
     2112                    PageInputFields::Cache &entry = inputFields[ pg ].cache[ i ];
     2113                    if ( entry.rect == NULL )
     2114                        inputFields[ pg ].fillCache( i );
     2115
     2116                    if ( entry.supported ) {
     2117                        RECTL r = {0};
     2118                        docPosToWinPos( pg, entry.rect, &r );
     2119
     2120                        POINTL ptl = { xpos, ypos };
     2121                        if ( WinPtInRect( hab, &r, &ptl ) )
    20962122                        {
    2097                             case LuInputField_Button:
     2123                            LuInputField *field = inputFields[ pg ].fields->_buffer[ i ];
     2124
     2125                            switch ( entry.type )
    20982126                            {
    2099                                 LuInputButton *button = static_cast<LuInputButton *>( field );
    2100                                 LuInputButton_ButtonType type = button->getButtonType( ev );
    2101                                 if ( type == LuInputButton_Check || type == LuInputButton_Radio ) {
    2102                                     boolean state = button->getState( ev );
    2103                                     button->setState( ev, !state );
    2104                                     WinInvalidateRect( hwnd, &r, FALSE );
     2127                                case LuInputField_Button:
     2128                                {
     2129                                    LuInputButton *button = static_cast<LuInputButton *>( field );
     2130                                    LuInputButton_ButtonType type = button->getButtonType( ev );
     2131                                    if ( type == LuInputButton_Check || type == LuInputButton_Radio ) {
     2132                                        boolean state = button->getState( ev );
     2133                                        button->setState( ev, !state );
     2134                                        WinInvalidateRect( hwnd, &r, FALSE );
     2135                                    }
     2136                                    break;
    21052137                                }
    2106                                 break;
     2138                                case LuInputField_Text:
     2139                                {
     2140                                    LuInputText *text = static_cast<LuInputText *>( field );
     2141                                    showTextField( text, pg, &r );
     2142                                    break;
     2143                                }
     2144                                default:
     2145                                    break;
    21072146                            }
    2108                             case LuInputField_Text:
    2109                             {
    2110                                 LuInputText *text = static_cast<LuInputText *>( field );
    2111                                 showTextField( text, pg, &r );
    2112                                 break;
    2113                             }
    2114                             default:
    2115                                 break;
     2147
     2148                            return TRUE;
    21162149                        }
    2117 
    2118                         return TRUE;
    21192150                    }
    21202151                }
  • branches/kmk/Lucide/gui/docViewer.h

    r346 r348  
    6161        LuRectangle *rect;
    6262        LuInputField_Type type;
     63        bool supported;
    6364    };
    6465
    6566    Cache *cache;
     67
     68    void fillCache( int i );
    6669};
    6770
Note: See TracChangeset for help on using the changeset viewer.