Changeset 241 for trunk


Ignore:
Timestamp:
Sep 2, 2007, 2:25:00 PM (14 years ago)
Author:
Eugene Romanenko
Message:

fullscreen: exit with Esc, hide mouse

Location:
trunk/Lucide/SOURCE/gui
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Lucide/SOURCE/gui/docViewer.cpp

    r234 r241  
    6363#define PAGEBACK_COLOR  0xFFFFFFL
    6464#define VERT_SPACE      2
     65#define NO_MOUSE_TIMER  1
    6566
    6667// DocumentViewer constructor
     
    106107    drawPS = false;
    107108    // fullscreen
    108     fullscreen = false;
     109    fullscreen     = false;
     110    secondsNoMouse = 0;
     111    mouseHidden    = false;
     112    xLastPos       = 0;
     113    yLastPos       = 0;
    109114    // asynch draw
    110115    abortAsynch = false;
     
    145150
    146151    drawThreadId = _beginthread( drawthread, NULL, 262144, this );
     152    WinStartTimer( hab, hWndDoc, NO_MOUSE_TIMER, 1000 );
    147153}
    148154
     
    286292
    287293    DosReleaseMutexSem( todrawAccess );
    288    
     294
    289295    WinInvalidateRect( hWndDocFrame, NULL, TRUE );
    290296}
     
    434440    WinSendMsg( hWndDocFrame, WM_UPDATEFRAME,
    435441                MPFROMLONG( FCF_VERTSCROLL | FCF_HORZSCROLL | FCF_SIZEBORDER ), MPVOID );
     442
     443    if ( mouseHidden ) {
     444        WinShowPointer( HWND_DESKTOP, TRUE );
     445        mouseHidden = false;
     446    }
    436447}
    437448
     
    15871598BOOL DocumentViewer::wmMouseMove( HWND hwnd, SHORT xpos, SHORT ypos )
    15881599{
     1600    if ( ( xpos != xLastPos ) || ( ypos != yLastPos ) ) // only if mouse really moved
     1601    {
     1602        secondsNoMouse = 0;
     1603        if ( fullscreen && mouseHidden )
     1604        {
     1605            WinShowPointer( HWND_DESKTOP, TRUE );
     1606            mouseHidden = false;
     1607        }
     1608    }
     1609    xLastPos = xpos;
     1610    yLastPos = ypos;
     1611
    15891612    if ( zoomMode )
    15901613    {
     
    18901913    }
    18911914
     1915    // Esc && fullscreen
     1916    if ( fullscreen && ( fsflags & KC_VIRTUALKEY ) && ( usvk == VK_ESC ) ) {
     1917        Lucide::toggleFullscreen();
     1918        return TRUE;
     1919    }
     1920
    18921921    // +
    18931922    if ( ( fsflags & KC_CHAR ) && !( fsflags & KC_KEYUP ) && ( usch == '+' ) ) {
     
    20192048}
    20202049
     2050// handles WM_TIMER
     2051void DocumentViewer::wmTimer( USHORT idTimer )
     2052{
     2053    if ( idTimer == NO_MOUSE_TIMER )
     2054    {
     2055        secondsNoMouse++;
     2056
     2057        if ( fullscreen && !mouseHidden && ( secondsNoMouse > 3 ) )
     2058        {
     2059            WinShowPointer( HWND_DESKTOP, FALSE );
     2060            mouseHidden = true;
     2061        }
     2062    }
     2063}
     2064
    20212065
    20222066// static, window procedure
     
    21052149            }
    21062150            break;
     2151
     2152        case WM_TIMER:
     2153            _this->wmTimer( SHORT1FROMMP( mp1 ) );
     2154            break;
    21072155    }
    21082156
  • trunk/Lucide/SOURCE/gui/docViewer.h

    r212 r241  
    107107        BOOL wmClick( HWND hwnd, SHORT xpos, SHORT ypos );
    108108        BOOL wmChar( HWND hwnd, MPARAM mp1, MPARAM mp2 );
     109                void wmTimer( USHORT idTimer );
    109110        void winPosToDocPos( PPOINTL startpoint, PPOINTL endpoint, LuRectangle *r );
    110111        void winPosToDocPos( PageDrawArea *pda, LuRectangle *r );
     
    165166        // fullscreen
    166167        bool fullscreen;
     168        long secondsNoMouse;
     169        bool mouseHidden;
     170        SHORT xLastPos;
     171        SHORT yLastPos;
    167172        PgLayout pglSave;
    168173        double zoomSave;
Note: See TracChangeset for help on using the changeset viewer.