Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
ac5e454e
Commit
ac5e454e
authored
Sep 25, 2004
by
Robert Shearman
Committed by
Alexandre Julliard
Sep 25, 2004
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- Implement WS_DISABLED style.
- Issue EN_CHANGE notification.
parent
a746e3b7
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
70 additions
and
25 deletions
+70
-25
hotkey.c
dlls/comctl32/hotkey.c
+70
-25
No files found.
dlls/comctl32/hotkey.c
View file @
ac5e454e
...
@@ -3,6 +3,7 @@
...
@@ -3,6 +3,7 @@
*
*
* Copyright 1998, 1999 Eric Kohl
* Copyright 1998, 1999 Eric Kohl
* Copyright 2002 Gyorgy 'Nog' Jeney
* Copyright 2002 Gyorgy 'Nog' Jeney
* Copyright 2004 Robert Shearman
*
*
* This library is free software; you can redistribute it and/or
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* modify it under the terms of the GNU Lesser General Public
...
@@ -25,11 +26,6 @@
...
@@ -25,11 +26,6 @@
* the specification mentioned above.
* the specification mentioned above.
* If you discover missing features or bugs please note them below.
* If you discover missing features or bugs please note them below.
*
*
* TODO:
* Styles:
* WS_DISABLED
* Notifications:
* EN_CHANGED
*/
*/
#include <stdarg.h>
#include <stdarg.h>
...
@@ -110,8 +106,16 @@ HOTKEY_DrawHotKey(HOTKEY_INFO *infoPtr, LPCWSTR KeyName, WORD NameLen, HDC hdc)
...
@@ -110,8 +106,16 @@ HOTKEY_DrawHotKey(HOTKEY_INFO *infoPtr, LPCWSTR KeyName, WORD NameLen, HDC hdc)
nYStart
=
GetSystemMetrics
(
SM_CYBORDER
);
nYStart
=
GetSystemMetrics
(
SM_CYBORDER
);
hFontOld
=
SelectObject
(
hdc
,
infoPtr
->
hFont
);
hFontOld
=
SelectObject
(
hdc
,
infoPtr
->
hFont
);
clrOldText
=
SetTextColor
(
hdc
,
comctl32_color
.
clrWindowText
);
if
(
GetWindowLongW
(
infoPtr
->
hwndSelf
,
GWL_STYLE
)
&
WS_DISABLED
)
clrOldBk
=
SetBkColor
(
hdc
,
comctl32_color
.
clrWindow
);
{
clrOldText
=
SetTextColor
(
hdc
,
comctl32_color
.
clrGrayText
);
clrOldBk
=
SetBkColor
(
hdc
,
comctl32_color
.
clrBtnFace
);
}
else
{
clrOldText
=
SetTextColor
(
hdc
,
comctl32_color
.
clrWindowText
);
clrOldBk
=
SetBkColor
(
hdc
,
comctl32_color
.
clrWindow
);
}
TextOutW
(
hdc
,
nXStart
,
nYStart
,
KeyName
,
NameLen
);
TextOutW
(
hdc
,
nXStart
,
nYStart
,
KeyName
,
NameLen
);
...
@@ -248,18 +252,26 @@ HOTKEY_Destroy (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
...
@@ -248,18 +252,26 @@ HOTKEY_Destroy (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
static
LRESULT
static
LRESULT
HOTKEY_EraseBackground
(
HOTKEY_INFO
*
infoPtr
,
WPARAM
wParam
,
LPARAM
lParam
)
HOTKEY_EraseBackground
(
HOTKEY_INFO
*
infoPtr
,
WPARAM
wParam
,
LPARAM
lParam
)
{
{
HBRUSH
hBrush
;
HBRUSH
hBrush
,
hSolidBrush
=
NULL
;
RECT
rc
;
RECT
rc
;
hBrush
=
if
(
GetWindowLongW
(
infoPtr
->
hwndSelf
,
GWL_STYLE
)
&
WS_DISABLED
)
(
HBRUSH
)
SendMessageW
(
infoPtr
->
hwndNotify
,
WM_CTLCOLOREDIT
,
hBrush
=
hSolidBrush
=
CreateSolidBrush
(
comctl32_color
.
clrBtnFace
);
wParam
,
(
LPARAM
)
infoPtr
->
hwndSelf
);
else
if
(
hBrush
)
{
hBrush
=
(
HBRUSH
)
GetStockObject
(
WHITE_BRUSH
);
hBrush
=
(
HBRUSH
)
SendMessageW
(
infoPtr
->
hwndNotify
,
WM_CTLCOLOREDIT
,
wParam
,
(
LPARAM
)
infoPtr
->
hwndSelf
);
if
(
!
hBrush
)
hBrush
=
hSolidBrush
=
CreateSolidBrush
(
comctl32_color
.
clrWindow
);
}
GetClientRect
(
infoPtr
->
hwndSelf
,
&
rc
);
GetClientRect
(
infoPtr
->
hwndSelf
,
&
rc
);
FillRect
((
HDC
)
wParam
,
&
rc
,
hBrush
);
FillRect
((
HDC
)
wParam
,
&
rc
,
hBrush
);
if
(
hSolidBrush
)
DeleteObject
(
hSolidBrush
);
return
-
1
;
return
-
1
;
}
}
...
@@ -273,11 +285,22 @@ HOTKEY_GetFont (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
...
@@ -273,11 +285,22 @@ HOTKEY_GetFont (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
static
LRESULT
static
LRESULT
HOTKEY_KeyDown
(
HOTKEY_INFO
*
infoPtr
,
WPARAM
wParam
,
LPARAM
lParam
)
HOTKEY_KeyDown
(
HOTKEY_INFO
*
infoPtr
,
WPARAM
wParam
,
LPARAM
lParam
)
{
{
WORD
wOldHotKey
;
BYTE
bOldMod
;
if
(
GetWindowLongW
(
infoPtr
->
hwndSelf
,
GWL_STYLE
)
&
WS_DISABLED
)
return
0
;
TRACE
(
"() Key: %d
\n
"
,
wParam
);
TRACE
(
"() Key: %d
\n
"
,
wParam
);
wOldHotKey
=
infoPtr
->
HotKey
;
bOldMod
=
infoPtr
->
CurrMod
;
/* If any key is Pressed, we have to reset the hotkey in the control */
/* If any key is Pressed, we have to reset the hotkey in the control */
infoPtr
->
HotKey
=
0
;
infoPtr
->
HotKey
=
0
;
switch
(
wParam
)
{
switch
(
wParam
)
{
case
VK_RETURN
:
case
VK_RETURN
:
case
VK_TAB
:
case
VK_TAB
:
case
VK_SPACE
:
case
VK_SPACE
:
...
@@ -307,7 +330,16 @@ HOTKEY_KeyDown (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
...
@@ -307,7 +330,16 @@ HOTKEY_KeyDown (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
break
;
break
;
}
}
InvalidateRect
(
infoPtr
->
hwndSelf
,
NULL
,
TRUE
);
if
((
wOldHotKey
!=
infoPtr
->
HotKey
)
||
(
bOldMod
!=
infoPtr
->
CurrMod
))
{
InvalidateRect
(
infoPtr
->
hwndSelf
,
NULL
,
TRUE
);
/* send EN_CHANGE notification */
SendMessageW
(
infoPtr
->
hwndNotify
,
WM_COMMAND
,
MAKEWPARAM
(
GetDlgCtrlID
(
infoPtr
->
hwndSelf
),
EN_CHANGE
),
(
LPARAM
)
infoPtr
->
hwndSelf
);
}
return
0
;
return
0
;
}
}
...
@@ -315,8 +347,17 @@ HOTKEY_KeyDown (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
...
@@ -315,8 +347,17 @@ HOTKEY_KeyDown (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
static
LRESULT
static
LRESULT
HOTKEY_KeyUp
(
HOTKEY_INFO
*
infoPtr
,
WPARAM
wParam
,
LPARAM
lParam
)
HOTKEY_KeyUp
(
HOTKEY_INFO
*
infoPtr
,
WPARAM
wParam
,
LPARAM
lParam
)
{
{
BYTE
bOldMod
;
if
(
GetWindowLongW
(
infoPtr
->
hwndSelf
,
GWL_STYLE
)
&
WS_DISABLED
)
return
0
;
TRACE
(
"() Key: %d
\n
"
,
wParam
);
TRACE
(
"() Key: %d
\n
"
,
wParam
);
switch
(
wParam
)
{
bOldMod
=
infoPtr
->
CurrMod
;
switch
(
wParam
)
{
case
VK_SHIFT
:
case
VK_SHIFT
:
infoPtr
->
CurrMod
&=
~
HOTKEYF_SHIFT
;
infoPtr
->
CurrMod
&=
~
HOTKEYF_SHIFT
;
break
;
break
;
...
@@ -330,7 +371,15 @@ HOTKEY_KeyUp (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
...
@@ -330,7 +371,15 @@ HOTKEY_KeyUp (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
return
1
;
return
1
;
}
}
InvalidateRect
(
infoPtr
->
hwndSelf
,
NULL
,
TRUE
);
if
(
bOldMod
!=
infoPtr
->
CurrMod
)
{
InvalidateRect
(
infoPtr
->
hwndSelf
,
NULL
,
TRUE
);
/* send EN_CHANGE notification */
SendMessageW
(
infoPtr
->
hwndNotify
,
WM_COMMAND
,
MAKEWPARAM
(
GetDlgCtrlID
(
infoPtr
->
hwndSelf
),
EN_CHANGE
),
(
LPARAM
)
infoPtr
->
hwndSelf
);
}
return
0
;
return
0
;
}
}
...
@@ -349,7 +398,8 @@ HOTKEY_KillFocus (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
...
@@ -349,7 +398,8 @@ HOTKEY_KillFocus (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
static
LRESULT
static
LRESULT
HOTKEY_LButtonDown
(
HOTKEY_INFO
*
infoPtr
,
WPARAM
wParam
,
LPARAM
lParam
)
HOTKEY_LButtonDown
(
HOTKEY_INFO
*
infoPtr
,
WPARAM
wParam
,
LPARAM
lParam
)
{
{
SetFocus
(
infoPtr
->
hwndSelf
);
if
(
!
(
GetWindowLongW
(
infoPtr
->
hwndSelf
,
GWL_STYLE
)
&
WS_DISABLED
))
SetFocus
(
infoPtr
->
hwndSelf
);
return
0
;
return
0
;
}
}
...
@@ -369,11 +419,10 @@ HOTKEY_NCCreate (HWND hwnd, WPARAM wParam, LPARAM lParam)
...
@@ -369,11 +419,10 @@ HOTKEY_NCCreate (HWND hwnd, WPARAM wParam, LPARAM lParam)
/* initialize info structure */
/* initialize info structure */
infoPtr
->
HotKey
=
infoPtr
->
InvComb
=
infoPtr
->
InvMod
=
infoPtr
->
CurrMod
=
0
;
infoPtr
->
HotKey
=
infoPtr
->
InvComb
=
infoPtr
->
InvMod
=
infoPtr
->
CurrMod
=
0
;
infoPtr
->
CaretPos
=
2
;
infoPtr
->
CaretPos
=
GetSystemMetrics
(
SM_CXBORDER
)
;
infoPtr
->
hwndSelf
=
hwnd
;
infoPtr
->
hwndSelf
=
hwnd
;
LoadStringW
(
COMCTL32_hModule
,
HKY_NONE
,
infoPtr
->
strNone
,
15
);
LoadStringW
(
COMCTL32_hModule
,
HKY_NONE
,
infoPtr
->
strNone
,
15
);
return
DefWindowProcW
(
infoPtr
->
hwndSelf
,
WM_NCCREATE
,
wParam
,
lParam
);
return
DefWindowProcW
(
infoPtr
->
hwndSelf
,
WM_NCCREATE
,
wParam
,
lParam
);
}
}
...
@@ -382,14 +431,10 @@ HOTKEY_SetFocus (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
...
@@ -382,14 +431,10 @@ HOTKEY_SetFocus (HOTKEY_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
{
{
infoPtr
->
bFocus
=
TRUE
;
infoPtr
->
bFocus
=
TRUE
;
CreateCaret
(
infoPtr
->
hwndSelf
,
NULL
,
1
,
infoPtr
->
nHeight
);
CreateCaret
(
infoPtr
->
hwndSelf
,
NULL
,
1
,
infoPtr
->
nHeight
);
SetCaretPos
(
infoPtr
->
CaretPos
,
GetSystemMetrics
(
SM_CYBORDER
));
SetCaretPos
(
infoPtr
->
CaretPos
,
GetSystemMetrics
(
SM_CYBORDER
));
ShowCaret
(
infoPtr
->
hwndSelf
);
ShowCaret
(
infoPtr
->
hwndSelf
);
return
0
;
return
0
;
}
}
...
@@ -501,7 +546,7 @@ HOTKEY_Register (void)
...
@@ -501,7 +546,7 @@ HOTKEY_Register (void)
ZeroMemory
(
&
wndClass
,
sizeof
(
WNDCLASSW
));
ZeroMemory
(
&
wndClass
,
sizeof
(
WNDCLASSW
));
wndClass
.
style
=
CS_GLOBALCLASS
;
wndClass
.
style
=
CS_GLOBALCLASS
;
wndClass
.
lpfnWndProc
=
(
WNDPROC
)
HOTKEY_WindowProc
;
wndClass
.
lpfnWndProc
=
HOTKEY_WindowProc
;
wndClass
.
cbClsExtra
=
0
;
wndClass
.
cbClsExtra
=
0
;
wndClass
.
cbWndExtra
=
sizeof
(
HOTKEY_INFO
*
);
wndClass
.
cbWndExtra
=
sizeof
(
HOTKEY_INFO
*
);
wndClass
.
hCursor
=
0
;
wndClass
.
hCursor
=
0
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment