diff options
author | hobbs <hobbs> | 2009-09-14 23:40:42 (GMT) |
---|---|---|
committer | hobbs <hobbs> | 2009-09-14 23:40:42 (GMT) |
commit | 7ddd685d9afb4397ba47bb464c385ef27f3d31ed (patch) | |
tree | 9e2f1b56c7f5c7c5faecaef7cbae85075e01588b /win | |
parent | 59d18bcefa5280de1152a05d08d250cb582fab62 (diff) | |
download | tk-7ddd685d9afb4397ba47bb464c385ef27f3d31ed.zip tk-7ddd685d9afb4397ba47bb464c385ef27f3d31ed.tar.gz tk-7ddd685d9afb4397ba47bb464c385ef27f3d31ed.tar.bz2 |
* generic/tkMenuDraw.c (TkPostSubmenu): Fix reposting of submenu in
* win/tkWinMenu.c (TkWinHandleMenuEvent): torn off Windows menu.
[Bug 873613]
(DrawMenuEntryArrow): Draw Win menu arrow after being torn
off. [Bug 873608]
Diffstat (limited to 'win')
-rw-r--r-- | win/tkWinMenu.c | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/win/tkWinMenu.c b/win/tkWinMenu.c index 84bd49d..6b9bad9 100644 --- a/win/tkWinMenu.c +++ b/win/tkWinMenu.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkWinMenu.c,v 1.59.2.2 2009/05/21 23:01:33 patthoyts Exp $ + * RCS: @(#) $Id: tkWinMenu.c,v 1.59.2.3 2009/09/14 23:40:42 hobbs Exp $ */ #define OEMRESOURCE @@ -50,6 +50,10 @@ #define MENU_SYSTEM_MENU MENU_PLATFORM_FLAG1 #define MENU_RECONFIGURE_PENDING MENU_PLATFORM_FLAG2 +#ifndef WM_UNINITMENUPOPUP +#define WM_UNINITMENUPOPUP 0x0125 +#endif + static int indicatorDimensions[2]; /* The dimensions of the indicator space in a * menu entry. Calculated at init time to save @@ -992,6 +996,19 @@ TkWinHandleMenuEvent( Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); switch (*pMessage) { + case WM_UNINITMENUPOPUP: + hashEntryPtr = Tcl_FindHashEntry(&tsdPtr->winMenuTable, + (char *) *pwParam); + if (hashEntryPtr != NULL) { + menuPtr = (TkMenu *) Tcl_GetHashValue(hashEntryPtr); + if ((menuPtr->menuRefPtr != NULL) + && (menuPtr->menuRefPtr->parentEntryPtr != NULL)) { + TkPostSubmenu(menuPtr->interp, + menuPtr->menuRefPtr->parentEntryPtr->menuPtr, NULL); + } + } + break; + case WM_INITMENU: TkMenuInit(); hashEntryPtr = Tcl_FindHashEntry(&tsdPtr->winMenuTable, @@ -1775,8 +1792,7 @@ DrawMenuEntryArrow( COLORREF oldBgColor; RECT rect; - if (!drawArrow || (mePtr->type != CASCADE_ENTRY) - || (mePtr->state != ENTRY_DISABLED)) { + if (!drawArrow || (mePtr->type != CASCADE_ENTRY)) { return; } @@ -1795,7 +1811,8 @@ DrawMenuEntryArrow( gc->background = activeBgColor->pixel; } - gc->foreground = GetSysColor(COLOR_GRAYTEXT); + gc->foreground = GetSysColor((mePtr->state == ENTRY_DISABLED) ? + COLOR_GRAYTEXT : COLOR_MENUTEXT); rect.top = y + GetSystemMetrics(SM_CYBORDER); rect.bottom = y + height - GetSystemMetrics(SM_CYBORDER); |