Changeset 983 for trunk/src


Ignore:
Timestamp:
Sep 19, 1999, 3:27:09 PM (26 years ago)
Author:
cbratschi
Message:

* empty log message *

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/comctl32/hotkey.c

    r968 r983  
    1 /* $Id: hotkey.c,v 1.5 1999-09-18 12:21:26 cbratschi Exp $ */
     1/* $Id: hotkey.c,v 1.6 1999-09-19 13:27:09 cbratschi Exp $ */
    22/*
    33 * Hotkey control
     
    99 * NOTES
    1010 *   Development in progress.
    11  *   CB: difficult with new User32
    1211 *
    1312 * TODO:
     
    4847
    4948  infoPtr->bVKHotKey = wParam & 0xFF;
    50   infoPtr->bfMods = HOTKEY_Check(infoPtr,wParam & 0xFF00);
     49  infoPtr->bfMods = HOTKEY_Check(infoPtr,(wParam & 0xFF00)>>8);
    5150
    5251  HOTKEY_UpdateHotKey(hwnd);
     
    8281
    8382static LRESULT
    84 HOTKEY_Char(HWND hwnd,WPARAM wParam,LPARAM lParam)
     83HOTKEY_Char(HWND hwnd,WPARAM wParam,LPARAM lParam,BOOL sysKey)
    8584{
    8685 //CB:
    8786  return 0;
    8887}
    89 
    90 
    91 static LRESULT
    92 HOTKEY_SysChar(HWND hwnd,WPARAM wParam,LPARAM lParam)
    93 {
    94  //CB:
    95   return 0;
    96 }
    97 
    9888
    9989static LRESULT
     
    116106    infoPtr->fwCombInv = 0;
    117107    infoPtr->fwModInv  = 0;
     108    infoPtr->cursorPos.x = 3;
     109    infoPtr->cursorPos.y = 3;
    118110
    119111    /* get default font height */
     
    164156
    165157static LRESULT
    166 HOTKEY_KeyDown (HWND hwnd, WPARAM wParam, LPARAM lParam)
    167 {
    168     /* HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr (hwnd); */
    169 
    170     switch (wParam) {
    171         case VK_RETURN:
    172         case VK_TAB:
    173         case VK_SPACE:
    174         case VK_DELETE:
    175         case VK_ESCAPE:
    176         case VK_BACK:
    177             return DefWindowProcA (hwnd, WM_KEYDOWN, wParam, lParam);
    178 
    179         case VK_SHIFT:
    180         case VK_CONTROL:
    181         case VK_MENU:
    182 //          FIXME (hotkey, "modifier key pressed!\n");
    183             break;
    184 
    185         default:
    186 //          FIXME (hotkey, " %d\n", wParam);
    187             break;
     158HOTKEY_KeyDown (HWND hwnd, WPARAM wParam, LPARAM lParam,BOOL sysKey)
     159{
     160  HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr (hwnd);
     161  INT newMods = sysKey ? HOTKEYF_ALT:0;
     162
     163  switch (wParam)
     164  {
     165    case VK_RETURN:
     166    case VK_TAB:
     167    case VK_SPACE:
     168    case VK_DELETE:
     169    case VK_ESCAPE:
     170    case VK_BACK:
     171         return DefWindowProcA (hwnd,sysKey ? WM_SYSKEYDOWN:WM_KEYDOWN, wParam, lParam);
     172
     173    case VK_SHIFT:
     174         newMods |= HOTKEYF_SHIFT;
     175         break;
     176
     177    case VK_CONTROL:
     178         newMods |= HOTKEYF_CONTROL;
     179         break;
     180
     181    default:
     182         break;
    188183    }
    189184
     185    infoPtr->bfMods = newMods;
     186    HOTKEY_UpdateHotKey(hwnd);
     187
    190188    return TRUE;
    191189}
     
    193191
    194192static LRESULT
    195 HOTKEY_KeyUp (HWND hwnd, WPARAM wParam, LPARAM lParam)
    196 {
    197     /* HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr (hwnd); */
     193HOTKEY_KeyUp (HWND hwnd, WPARAM wParam, LPARAM lParam,BOOL sysKey)
     194{
     195  HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr (hwnd);
    198196
    199197//    FIXME (hotkey, " %d\n", wParam);
    200198
    201     return 0;
     199  return 0;
    202200}
    203201
     
    239237{
    240238  HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr(hwnd);
    241   RECT rect;
     239  RECT rect,newRect;
    242240  char text[50];
    243241  HFONT oldFont;
    244242
     243  HideCaret(hwnd);
    245244  GetClientRect(hwnd,&rect);
    246245  DrawEdge(hdc,&rect,EDGE_SUNKEN,BF_RECT | BF_ADJUST);
     
    271270  if(infoPtr->hFont) oldFont = SelectObject(hdc,infoPtr->hFont);
    272271  SetBkMode(hdc,TRANSPARENT);
    273   DrawTextA(hdc,text,strlen(text),&rect,DT_LEFT | DT_BOTTOM | DT_SINGLELINE);
     272  CopyRect(&newRect,&rect);
     273  DrawTextA(hdc,text,strlen(text),&newRect,DT_LEFT | DT_BOTTOM | DT_SINGLELINE);
     274  DrawTextA(hdc,text,strlen(text),&newRect,DT_LEFT | DT_BOTTOM | DT_SINGLELINE | DT_CALCRECT);
    274275  if (infoPtr->hFont) SelectObject(hdc,oldFont);
     276  infoPtr->cursorPos.x = (newRect.right >= rect.right)? -1:newRect.right;
     277  SetCaretPos(infoPtr->cursorPos.x,infoPtr->cursorPos.y);
     278  ShowCaret(hwnd);
    275279}
    276280
     
    317321    infoPtr->bFocus = TRUE;
    318322
    319     CreateCaret (hwnd, (HBITMAP)0, 1, infoPtr->nHeight);
    320     SetCaretPos (3,3);
    321     ShowCaret (hwnd);
     323    CreateCaret(hwnd,(HBITMAP)0,1,infoPtr->nHeight);
     324    SetCaretPos(infoPtr->cursorPos.x,infoPtr->cursorPos.y);
     325    ShowCaret(hwnd);
    322326
    323327    return 0;
     
    352356
    353357
    354 static LRESULT WINE_UNUSED
    355 HOTKEY_SysKeyDown (HWND hwnd, WPARAM wParam, LPARAM lParam)
    356 {
    357     /* HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr (hwnd); */
    358 
    359     switch (wParam) {
    360         case VK_RETURN:
    361         case VK_TAB:
    362         case VK_SPACE:
    363         case VK_DELETE:
    364         case VK_ESCAPE:
    365         case VK_BACK:
    366             return DefWindowProcA (hwnd, WM_SYSKEYDOWN, wParam, lParam);
    367 
    368         case VK_SHIFT:
    369         case VK_CONTROL:
    370         case VK_MENU:
    371 //          FIXME (hotkey, "modifier key pressed!\n");
    372             break;
    373 
    374         default:
    375 //          FIXME (hotkey, " %d\n", wParam);
    376             break;
    377     }
    378 
    379     return TRUE;
    380 }
    381 
    382 
    383 static LRESULT WINE_UNUSED
    384 HOTKEY_SysKeyUp (HWND hwnd, WPARAM wParam, LPARAM lParam)
    385 {
    386     /* HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr (hwnd); */
    387 
    388 //    FIXME (hotkey, " %d\n", wParam);
    389 
    390     return 0;
    391 }
    392 
    393 
    394 
    395358static LRESULT WINAPI
    396359HOTKEY_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
     
    408371
    409372        case WM_CHAR:
    410             return HOTKEY_Char(hwnd,wParam,lParam);
     373            return HOTKEY_Char(hwnd,wParam,lParam,FALSE);
     374
     375        case WM_SYSCHAR:
     376            return HOTKEY_Char(hwnd,wParam,lParam,TRUE);
    411377
    412378        case WM_CREATE:
     
    426392
    427393        case WM_KEYDOWN:
    428             return HOTKEY_KeyDown(hwnd,wParam,lParam);
     394            return HOTKEY_KeyDown(hwnd,wParam,lParam,FALSE);
    429395
    430396        case WM_SYSKEYDOWN:
    431             return HOTKEY_SysKeyDown (hwnd, wParam, lParam);
     397            return HOTKEY_KeyDown(hwnd,wParam,lParam,TRUE);
    432398
    433399        case WM_KEYUP:
    434             return HOTKEY_KeyUp(hwnd,wParam,lParam);
     400            return HOTKEY_KeyUp(hwnd,wParam,lParam,FALSE);
    435401
    436402        case WM_SYSKEYUP:
    437             return HOTKEY_SysKeyUp (hwnd, wParam, lParam);
     403            return HOTKEY_KeyUp(hwnd,wParam,lParam,TRUE);
    438404
    439405        case WM_KILLFOCUS:
     
    454420        case WM_SETFONT:
    455421            return HOTKEY_SetFont (hwnd, wParam, lParam);
    456 
    457         case WM_SYSCHAR:
    458             return HOTKEY_SysChar(hwnd,wParam,lParam);
    459422
    460423        default:
Note: See TracChangeset for help on using the changeset viewer.