Changeset 410 for trunk/Lucide


Ignore:
Timestamp:
Apr 19, 2010, 8:48:57 PM (11 years ago)
Author:
dmik
Message:

Make sure the current page in the index window is always visible.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Lucide/gui/indexWindow.cpp

    r367 r410  
    240240            WinSendMsg( hWndIndex, CM_SETRECORDEMPHASIS, MPFROMP( pr ),
    241241                        MPFROM2SHORT( TRUE, CRA_SELECTED | CRA_CURSORED ) );
     242            // make sure the selected page is visible
     243            RECTL rcl;
     244            QUERYRECORDRECT qrr;
     245            qrr.cb = sizeof(QUERYRECORDRECT);
     246            qrr.pRecord = (PRECORDCORE)&pr->miniRecordCore;
     247            qrr.fRightSplitWindow = FALSE;
     248            qrr.fsExtent = CMA_TEXT;
     249            if ( WinSendMsg( hWndIndex, CM_QUERYRECORDRECT,
     250                             MPFROMP( &rcl ), MPFROMP( &qrr ) ) ) {
     251                RECTL wrcl;
     252                if ( WinSendMsg( hWndIndex, CM_QUERYVIEWPORTRECT,
     253                                 MPFROMP( &wrcl ), MPFROM2SHORT( CMA_WINDOW, FALSE ) ) ) {
     254                    LONG dy = 0;
     255                    if ( rcl.yTop > wrcl.yTop ) {
     256                        dy = wrcl.yTop - rcl.yTop;
     257                    } else if ( rcl.yBottom < wrcl.yBottom ) {
     258                        dy = wrcl.yBottom - rcl.yBottom;
     259                    }
     260                    if ( dy ) {
     261                        WinSendMsg( hWndIndex, CM_SCROLLWINDOW,
     262                                    MPFROMSHORT( CMA_VERTICAL ),
     263                                    MPFROMLONG( dy ) );
     264                    }
     265                }
     266            }
    242267            return true;
    243268        }
Note: See TracChangeset for help on using the changeset viewer.