Changeset 408 for trunk


Ignore:
Timestamp:
Apr 19, 2010, 7:55:42 PM (11 years ago)
Author:
dmik
Message:

Unified keyboard navigation in all modes (fixes ticket:177).

Location:
trunk/Lucide/gui
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Lucide/gui/Lucide.rc

    r407 r408  
    133133    "-", CM_PREVPAGE
    134134    "_", CM_PREVPAGE
     135    VK_PAGEDOWN, CM_NEXTPAGE, VIRTUALKEY, CONTROL
     136    VK_PAGEUP, CM_PREVPAGE, VIRTUALKEY, CONTROL
     137    VK_END, CM_LASTPAGE, VIRTUALKEY, CONTROL
     138    VK_HOME, CM_FIRSTPAGE, VIRTUALKEY, CONTROL
    135139    "+", CM_ZOOM_IN, CONTROL
    136140    "=", CM_ZOOM_IN, CONTROL
  • trunk/Lucide/gui/docViewer.cpp

    r399 r408  
    22422242        {
    22432243            case VK_UP:
    2244                 WinSendMsg( hwnd, WM_VSCROLL, MPVOID, MPFROM2SHORT( 0, SB_LINEUP ) );
     2244                if ( fsflags & KC_CTRL ) {
     2245                    vertScroll( hwnd, MPFROM2SHORT( 0, SB_SLIDERPOSITION ) );
     2246                } else {
     2247                    WinSendMsg( hwnd, WM_VSCROLL, MPVOID, MPFROM2SHORT( 0, SB_LINEUP ) );
     2248                }
    22452249                return TRUE;
    22462250
    22472251            case VK_DOWN:
    2248                 WinSendMsg( hwnd, WM_VSCROLL, MPVOID, MPFROM2SHORT( 0, SB_LINEDOWN ) );
     2252                if ( fsflags & KC_CTRL ) {
     2253                    vertScroll( hwnd, MPFROM2SHORT( sVscrollMax, SB_SLIDERPOSITION ) );
     2254                } else {
     2255                    WinSendMsg( hwnd, WM_VSCROLL, MPVOID, MPFROM2SHORT( 0, SB_LINEDOWN ) );
     2256                }
    22492257                return TRUE;
    22502258
     2259            case VK_LEFT:
     2260                if ( fsflags & KC_CTRL ) {
     2261                    horizScroll( hwnd, MPFROM2SHORT( 0, SB_SLIDERPOSITION ) );
     2262                } else {
     2263                    WinSendMsg( hwnd, WM_HSCROLL, MPVOID, MPFROM2SHORT( 0, SB_LINELEFT ) );
     2264                }
     2265                return TRUE;
     2266
     2267            case VK_RIGHT:
     2268                if ( fsflags & KC_CTRL ) {
     2269                    horizScroll( hwnd, MPFROM2SHORT( sHscrollMax, SB_SLIDERPOSITION ) );
     2270                } else {
     2271                    WinSendMsg( hwnd, WM_HSCROLL, MPVOID, MPFROM2SHORT( 0, SB_LINERIGHT ) );
     2272                }
     2273                return TRUE;
     2274
     2275
    22512276            case VK_PAGEUP:
    2252                 if ( fsflags & KC_CTRL )
    2253                 {
    2254                     if ( presentation ) {
    2255                         goToPage( 0 );
    2256                     } else {
    2257                         vertScroll( hwnd, MPFROM2SHORT( 0, SB_SLIDERPOSITION ) );
    2258                     }
    2259                 }
    2260                 else
     2277                if ( !( fsflags & KC_CTRL ) )
    22612278                {
    22622279                    bool dojump = ( !isContinuous() && ( sVscrollPos == 0 )
    22632280                                        && ( currentpage > 0 ) );
    22642281
    2265                     if ( presentation || dojump ) {
     2282                    if ( dojump ) {
    22662283                        goToPage( currentpage - 1 );
    2267                         if ( dojump ) {
    2268                             vertScroll( hwnd, MPFROM2SHORT( sVscrollMax, SB_SLIDERPOSITION ) );
    2269                         }
     2284                        vertScroll( hwnd, MPFROM2SHORT( sVscrollMax, SB_SLIDERPOSITION ) );
    22702285                    } else {
    22712286                        WinSendMsg( hwnd, WM_VSCROLL, MPVOID, MPFROM2SHORT( 0, SB_PAGEUP ) );
    22722287                    }
    2273                 }
    2274                 return TRUE;
     2288                    return TRUE;
     2289                }
     2290                break;
    22752291
    22762292            case VK_PAGEDOWN:
    2277                 if ( fsflags & KC_CTRL )
    2278                 {
    2279                     if ( presentation ) {
    2280                         goToPage( totalpages - 1 );
    2281                     } else {
    2282                         vertScroll( hwnd, MPFROM2SHORT( sVscrollMax, SB_SLIDERPOSITION ) );
    2283                     }
    2284                 }
    2285                 else
     2293                if ( !( fsflags & KC_CTRL ) )
    22862294                {
    22872295                    bool dojump = ( !isContinuous() && ( sVscrollPos == sVscrollMax ) );
    22882296
    2289                     if ( presentation || dojump ) {
     2297                    if ( dojump ) {
    22902298                        goToPage( currentpage + 1 );
    22912299                    } else {
    22922300                        WinSendMsg( hwnd, WM_VSCROLL, MPVOID, MPFROM2SHORT( 0, SB_PAGEDOWN ) );
    22932301                    }
    2294                 }
    2295                 return TRUE;
    2296 
    2297             case VK_LEFT:
    2298                 WinSendMsg( hwnd, WM_HSCROLL, MPVOID, MPFROM2SHORT( 0, SB_LINELEFT ) );
    2299                 return TRUE;
    2300 
    2301             case VK_RIGHT:
    2302                 WinSendMsg( hwnd, WM_HSCROLL, MPVOID, MPFROM2SHORT( 0, SB_LINERIGHT ) );
    2303                 return TRUE;
     2302                    return TRUE;
     2303                }
     2304                break;
    23042305
    23052306            case VK_HOME:
    2306                 horizScroll( hwnd, MPFROM2SHORT( 0, SB_SLIDERPOSITION ) );
    2307                 return TRUE;
     2307                if ( !( fsflags & KC_CTRL ) )
     2308                {
     2309                    goToPage( 0 );
     2310                    vertScroll( hwnd, MPFROM2SHORT( 0, SB_SLIDERPOSITION ) );
     2311                    return TRUE;
     2312                }
     2313                break;
    23082314
    23092315            case VK_END:
    2310                 horizScroll( hwnd, MPFROM2SHORT( sHscrollMax, SB_SLIDERPOSITION ) );
    2311                 return TRUE;
     2316                if ( !( fsflags & KC_CTRL ) )
     2317                {
     2318                    goToPage( totalpages - 1 );
     2319                    vertScroll( hwnd, MPFROM2SHORT( sVscrollMax, SB_SLIDERPOSITION ) );
     2320                    return TRUE;
     2321                }
     2322                break;
    23122323
    23132324            case VK_ESC:
Note: See TracChangeset for help on using the changeset viewer.