Changeset 11612


Ignore:
Timestamp:
Sep 23, 1999, 5:50:21 PM (26 years ago)
Author:
cbratschi
Message:

* empty log message *

Location:
tags/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified tags/trunk/include/win/hotkey.h

    r11573 r11612  
    1 /* $Id: hotkey.h,v 1.3 1999-09-19 13:26:47 cbratschi Exp $ */
     1/* $Id: hotkey.h,v 1.4 1999-09-23 15:49:57 cbratschi Exp $ */
    22
    33/*
     
    2121    INT   fwModInv;
    2222    POINT cursorPos;
     23    BYTE  bfModsDown;
    2324} HOTKEY_INFO;
    2425
  • TabularUnified tags/trunk/src/comctl32/hotkey.c

    r11578 r11612  
    1 /* $Id: hotkey.c,v 1.7 1999-09-20 15:59:27 cbratschi Exp $ */
     1/* $Id: hotkey.c,v 1.8 1999-09-23 15:50:21 cbratschi Exp $ */
    22/*
    33 * Hotkey control
     
    77 * Copyright 1999 Christoph Bratschi
    88 *
    9  * NOTES
    10  *   Development in progress.
    11  *
    12  * TODO:
    13  *   - keyboard messages
     9 * Status: Development in progress
     10 * Version: 5.00
    1411 */
    1512
     
    2421HOTKEY_Refresh(HWND hwnd)
    2522{
    26   InvalidateRect(hwnd,NULL,FALSE);
     23  RECT rect;
     24
     25  GetClientRect(hwnd,&rect);
     26  InflateRect(&rect,-2,-2);
     27  InvalidateRect(hwnd,&rect,FALSE);
    2728}
    2829
     
    8788HOTKEY_Char(HWND hwnd,WPARAM wParam,LPARAM lParam,BOOL sysKey)
    8889{
    89  //CB:
     90  HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr(hwnd);
     91
     92  if (wParam != infoPtr->bVKHotKey)
     93  {
     94    infoPtr->bVKHotKey = wParam & 0xFF;
     95    infoPtr->bfMods = HOTKEY_Check(infoPtr,infoPtr->bfMods);
     96    HOTKEY_Refresh(hwnd);
     97  }
     98
    9099  return 0;
    91100}
     
    112121    infoPtr->cursorPos.x = 3;
    113122    infoPtr->cursorPos.y = 3;
     123    infoPtr->bfModsDown = 0;
    114124
    115125    /* get default font height */
     
    144154    if (!hBrush) hBrush = (HBRUSH)GetStockObject(WHITE_BRUSH);
    145155    GetClientRect(hwnd,&rc);
     156    HideCaret(hwnd);
    146157    FillRect((HDC)wParam,&rc,hBrush);
     158    ShowCaret(hwnd);
    147159
    148160    return -1;
     
    163175{
    164176  HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr (hwnd);
    165   INT newMods = sysKey ? HOTKEYF_ALT:0;
    166 
     177  INT newMods = (sysKey ? HOTKEYF_ALT:0) | infoPtr->bfModsDown;
     178  INT newKey = (infoPtr->bfModsDown == 0) ? 0:infoPtr->bVKHotKey;
     179
     180  if (sysKey) infoPtr->bfModsDown |= HOTKEYF_ALT;
    167181  switch (wParam)
    168182  {
     
    177191    case VK_SHIFT:
    178192         newMods |= HOTKEYF_SHIFT;
     193         infoPtr->bfModsDown |= HOTKEYF_SHIFT;
    179194         break;
    180195
    181196    case VK_CONTROL:
    182197         newMods |= HOTKEYF_CONTROL;
     198         infoPtr->bfModsDown |= HOTKEYF_CONTROL;
     199         break;
     200
     201    default:
     202         //CB:
     203         break;
     204    }
     205
     206    newMods = HOTKEY_Check(infoPtr,newMods);
     207    if (infoPtr->bfMods != newMods)
     208    {
     209      infoPtr->bVKHotKey = newKey;
     210      infoPtr->bfMods = newMods;
     211      HOTKEY_Refresh(hwnd);
     212    }
     213
     214    return 0;
     215}
     216
     217
     218static LRESULT
     219HOTKEY_KeyUp (HWND hwnd, WPARAM wParam, LPARAM lParam,BOOL sysKey)
     220{
     221  HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr (hwnd);
     222  INT newMods = infoPtr->bfModsDown;
     223
     224  if (sysKey)
     225  {
     226    newMods &= ~HOTKEYF_ALT;
     227    infoPtr->bfModsDown &= ~HOTKEYF_ALT;
     228  }
     229  switch (wParam)
     230  {
     231    case VK_RETURN:
     232    case VK_TAB:
     233    case VK_SPACE:
     234    case VK_DELETE:
     235    case VK_ESCAPE:
     236    case VK_BACK:
     237         return DefWindowProcA (hwnd,sysKey ? WM_SYSKEYDOWN:WM_KEYDOWN, wParam, lParam);
     238
     239    case VK_SHIFT:
     240         newMods &= ~HOTKEYF_SHIFT;
     241         infoPtr->bfModsDown &= ~HOTKEYF_SHIFT;
     242         break;
     243
     244    case VK_CONTROL:
     245         newMods &= ~HOTKEYF_CONTROL;
     246         infoPtr->bfModsDown &= ~HOTKEYF_CONTROL;
    183247         break;
    184248
     
    187251    }
    188252
    189     infoPtr->bfMods = newMods;
    190     HOTKEY_Refresh(hwnd);
    191 
    192     return TRUE;
    193 }
    194 
    195 
    196 static LRESULT
    197 HOTKEY_KeyUp (HWND hwnd, WPARAM wParam, LPARAM lParam,BOOL sysKey)
    198 {
    199   HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr (hwnd);
    200 
    201 //    FIXME (hotkey, " %d\n", wParam);
    202 
    203   return 0;
     253    newMods = HOTKEY_Check(infoPtr,newMods);
     254    if (infoPtr->bfMods != newMods)
     255    {
     256      infoPtr->bfMods = newMods;
     257      HOTKEY_Refresh(hwnd);
     258    }
     259
     260    return 0;
    204261}
    205262
     
    210267    HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr (hwnd);
    211268
     269    infoPtr->bfModsDown = 0;
    212270    infoPtr->bFocus = FALSE;
    213     DestroyCaret ();
     271    DestroyCaret();
    214272
    215273    return 0;
     
    220278HOTKEY_LButtonDown (HWND hwnd, WPARAM wParam, LPARAM lParam)
    221279{
    222 /*    HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr (hwnd); */
    223 
    224280    SetFocus (hwnd);
    225281
     
    271327    char2[1] = 0;
    272328    strcat(text,char2);
    273   }
     329  } else if (infoPtr->bfModsDown) strcat(text,"+");
    274330  if(infoPtr->hFont) oldFont = SelectObject(hdc,infoPtr->hFont);
    275331  SetBkMode(hdc,TRANSPARENT);
Note: See TracChangeset for help on using the changeset viewer.