Changeset 21955
- Timestamp:
- Jan 31, 2012, 10:25:42 PM (13 years ago)
- Location:
- trunk/src/user32
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/src/user32/oslibmsg.cpp ¶
r21916 r21955 548 548 //TODO: QS_HOTKEY 549 549 //****************************************************************************** 550 ULONG OSLibWinQueryQueueStatus( )550 ULONG OSLibWinQueryQueueStatus(ULONG flags) 551 551 { 552 552 ULONG statusOS2, statusWin32 = 0; 553 553 554 554 statusOS2 = WinQueryQueueStatus(HWND_DESKTOP); 555 dprintf(("*** 3 %x", statusOS2)); 556 557 if (flags & QS_KEY) 558 { 559 // WinQueryQueueStatus() has a bug which causes it to always return 560 // the QS_KEY bit set when the associated window is active, regardless 561 // of whether thiere are WM_CHAR messages in the queue or not. We try to 562 // fix this by looking up the queue ourselves if the caller actually 563 // wants this state to be checked 564 QMSG qmsg; 565 BOOL haveKey = WinPeekMsg (0, &qmsg, 0, WM_CHAR, WM_CHAR, PM_NOREMOVE); 566 if (haveKey) 567 { 568 // set the proper "summary" status 569 statusOS2 |= (QS_KEY << 16); 570 } 571 else 572 { 573 statusOS2 &= ~(QS_KEY << 16); 574 // according to PMREF, the "added" field is a subset of the 575 // "summary" field, so it makes no sense to have it set when it is 576 // reset in "summary" 577 statusOS2 &= ~(QS_KEY); 578 } 579 } 555 580 556 581 // convert the flags since last call (low word) -
TabularUnified trunk/src/user32/oslibmsg.h ¶
r21502 r21955 49 49 LONG OSLibWinGetMessageTime(); 50 50 BOOL OSLibWinReplyMessage(ULONG result); 51 ULONG OSLibWinQueryQueueStatus( );51 ULONG OSLibWinQueryQueueStatus(ULONG flags); 52 52 53 53 BOOL OSLibPostThreadMessage(ULONG threadid, UINT msg, WPARAM wParam, LPARAM lParam, BOOL fUnicode); -
TabularUnified trunk/src/user32/windowmsg.cpp ¶
r21916 r21955 1115 1115 // queue since the last call to GetQueueStatus 1116 1116 //****************************************************************************** 1117 DWORD WIN32API GetQueueStatus( 1117 DWORD WIN32API GetQueueStatus(UINT flags) 1118 1118 { 1119 1119 DWORD queueStatus; 1120 1120 1121 queueStatus = OSLibWinQueryQueueStatus( );1121 queueStatus = OSLibWinQueryQueueStatus(flags); 1122 1122 1123 1123 dprintf(("USER32: GetQueueStatus %x returned %x", flags, queueStatus & MAKELONG(flags, flags))); … … 1144 1144 BOOL rc; 1145 1145 1146 queueStatus = OSLibWinQueryQueueStatus( );1146 queueStatus = OSLibWinQueryQueueStatus(QS_INPUT); 1147 1147 1148 1148 rc = (queueStatus & (QS_KEY | QS_MOUSEBUTTON)) ? TRUE : FALSE;
Note:
See TracChangeset
for help on using the changeset viewer.