Ignore:
Timestamp:
Mar 27, 2010, 8:32:57 PM (12 years ago)
Author:
dmik
Message:

branches/kmk: DocumentViewer?: Change the cursor type to I-beam when over the input field.

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

Legend:

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

    r309 r324  
    5656typedef LuDocument_LuRectSequence    *PLuRectSequence;
    5757typedef LuDocument_LuLinkMapSequence *PLuLinkMapSequence;
     58typedef LuDocument_LuInputFieldSequence *PLuInputFieldSequence;
    5859
    5960#define LINE_HEIGHT     16
     
    128129    selrects = NULL;
    129130    // links
    130     haveLinks = false;
    131131    links = NULL;
    132132    handPtr = WinLoadPointer( HWND_DESKTOP, _hmod, IDP_HAND );
     
    134134    zoomInPtr = WinLoadPointer( HWND_DESKTOP, _hmod, IDP_ZOOM_IN );
    135135    zoomOutPtr = WinLoadPointer( HWND_DESKTOP, _hmod, IDP_ZOOM_OUT );
     136    textPtr = WinQuerySysPointer( HWND_DESKTOP, SPTR_TEXT, FALSE );
     137    // input fields
     138    inputFields = NULL;
    136139    // search
    137140    foundrects = NULL;
     
    171174        freeRects( foundrects );
    172175        freeLinks();
     176        freeInputFields();
    173177    }
    174178
     
    211215            zoom = 1;
    212216        }
    213         haveLinks = doc->isHaveLinks( ev );
    214217
    215218        pagesizes = new LuSize[ totalpages ];
     
    223226        memset( foundrects, 0, sizeof( PLuRectSequence ) * totalpages );
    224227
    225         links = new PLuLinkMapSequence[ totalpages ];
    226         memset( links, 0, sizeof( PLuLinkMapSequence ) * totalpages );
     228        if ( doc->isHaveLinks( ev ) ) {
     229            links = new PLuLinkMapSequence[ totalpages ];
     230            memset( links, 0, sizeof( PLuLinkMapSequence ) * totalpages );
     231        }
     232
     233        if ( doc->isHaveInputFields( ev ) ) {
     234            inputFields = new PLuInputFieldSequence[ totalpages ];
     235            memset( inputFields, 0, sizeof( PLuInputFieldSequence ) * totalpages );
     236        }
    227237
    228238        selection = new LuRectangle[ totalpages ];
     
    289299    freeLinks();
    290300
    291     doc         = NULL;
    292     totalpages  = 0;
    293     currentpage = 0;
    294     fullwidth   = 0;
    295     fullheight  = 0;
    296     haveLinks   = false;
     301    freeInputFields();
     302
     303    doc             = NULL;
     304    totalpages      = 0;
     305    currentpage     = 0;
     306    fullwidth       = 0;
     307    fullheight      = 0;
    297308
    298309    DosReleaseMutexSem( todrawAccess );
     
    343354}
    344355
     356void DocumentViewer::freeInputFields()
     357{
     358    if ( inputFields != NULL )
     359    {
     360        for ( long i = 0; i < totalpages; i++ ) {
     361            if ( inputFields[ i ] != NULL ) {
     362                LuDocument::freeInputFields( ev, inputFields[ i ] );
     363                inputFields[ i ] = NULL;
     364            }
     365        }
     366
     367        delete inputFields;
     368        inputFields = NULL;
     369    }
     370}
    345371
    346372// switch view to specified page
     
    624650
    625651        if ( links != NULL ) {
    626             if ( ( links[ currentpage ] == NULL ) && haveLinks ) {
     652            if ( links[ currentpage ] == NULL ) {
    627653                links[ currentpage ] = doc->getLinkMapping( ev, currentpage );
     654            }
     655        }
     656
     657        if ( inputFields != NULL ) {
     658            if ( inputFields[ currentpage ] == NULL ) {
     659                inputFields[ currentpage ] = doc->getInputFields( ev, currentpage );
    628660            }
    629661        }
     
    10901122
    10911123            // load links for page if not loaded before
    1092             if ( ( links[ pda->pagenum ] == NULL ) && haveLinks ) {
     1124            if ( links[ pda->pagenum ] == NULL ) {
    10931125                links[ pda->pagenum ] = doc->getLinkMapping( ev, pda->pagenum );
     1126            }
     1127
     1128            // load input fields for page if not loaded before
     1129            if ( inputFields[ pda->pagenum ] == NULL ) {
     1130                inputFields[ pda->pagenum ] = doc->getInputFields( ev, pda->pagenum );
    10941131            }
    10951132        }
     
    13011338
    13021339            // load links for page if not loaded before
    1303             if ( ( links[ pda->pagenum ] == NULL ) && haveLinks ) {
     1340            if ( links[ pda->pagenum ] == NULL ) {
    13041341                links[ pda->pagenum ] = doc->getLinkMapping( ev, pda->pagenum );
     1342            }
     1343
     1344            // load input fields for page if not loaded before
     1345            if ( inputFields[ pda->pagenum ] == NULL ) {
     1346                inputFields[ pda->pagenum ] = doc->getInputFields( ev, pda->pagenum );
    13051347            }
    13061348
     
    17351777            return TRUE;
    17361778        }
    1737         else if ( links != NULL )
     1779        else if ( links != NULL || inputFields != NULL )
    17381780        {
    17391781            long pg = currentpage;
     
    17431785            }
    17441786
    1745             if ( ( pg != -1 ) && ( links[ pg ] != NULL ) )
     1787            if ( links != NULL )
    17461788            {
    1747                 for ( int i = 0; i < links[ pg ]->_length; i++ )
     1789                if ( ( pg != -1 ) && ( links[ pg ] != NULL ) )
    17481790                {
    1749                     RECTL r = {0};
    1750                     docPosToWinPos( pg, &(links[ pg ]->_buffer[i].area), &r );
    1751 
    1752                     POINTL ptl = { xpos, ypos };
    1753                     if ( WinPtInRect( hab, &r, &ptl ) ) {
    1754                         WinSetPointer( HWND_DESKTOP, handPtr );
    1755                         return TRUE;
     1791                    for ( int i = 0; i < links[ pg ]->_length; i++ )
     1792                    {
     1793                        RECTL r = {0};
     1794                        docPosToWinPos( pg, &(links[ pg ]->_buffer[i].area), &r );
     1795
     1796                        POINTL ptl = { xpos, ypos };
     1797                        if ( WinPtInRect( hab, &r, &ptl ) ) {
     1798                            WinSetPointer( HWND_DESKTOP, handPtr );
     1799                            return TRUE;
     1800                        }
     1801                    }
     1802                }
     1803            }
     1804
     1805            if ( inputFields != NULL )
     1806            {
     1807                if ( ( pg != -1 ) && ( inputFields[ pg ] != NULL ) )
     1808                {
     1809                    for ( int i = 0; i < inputFields[ pg ]->_length; i++ )
     1810                    {
     1811                        LuRectangle *rect = inputFields[ pg ]->_buffer[i]->getRectangle( ev );
     1812
     1813                        RECTL r = {0};
     1814                        docPosToWinPos( pg, rect, &r );
     1815
     1816                        POINTL ptl = { xpos, ypos };
     1817                        if ( WinPtInRect( hab, &r, &ptl ) ) {
     1818                            WinSetPointer( HWND_DESKTOP, textPtr );
     1819                            return TRUE;
     1820                        }
    17561821                    }
    17571822                }
  • branches/kmk/Lucide/gui/docViewer.h

    r285 r324  
    120120        void freeRects( LuDocument_LuRectSequence **rects );
    121121        void freeLinks();
     122        void freeInputFields();
    122123        void drawFound( long pagenum, HPS hps, PRECTL r );
    123124        DrawAreas *findDrawAreas( PRECTL r );
     
    204205
    205206        // links
    206         bool haveLinks;
    207207        LuDocument_LuLinkMapSequence **links;
     208
     209        // input fields
     210        LuDocument_LuInputFieldSequence **inputFields;
    208211
    209212        // search
     
    219222        HPOINTER zoomInPtr;
    220223        HPOINTER zoomOutPtr;
     224        HPOINTER textPtr;
    221225};
    222226
Note: See TracChangeset for help on using the changeset viewer.