mirror of
https://github.com/gnustep/libs-back.git
synced 2025-02-23 20:01:22 +00:00
Reset the cursors stack when we are on a non-client area of a window. This is a workaround for an issue where we're not getting enough mouse move events when the mouse is moving very fast, and therefore occasionally find ourselves stuck with a cursor set for a rectangle that we've left.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/branches/gnustep_testplant_branch@37271 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
128d09da60
commit
b379b7ff5b
4 changed files with 40 additions and 7 deletions
13
ChangeLog
13
ChangeLog
|
@ -1,9 +1,20 @@
|
|||
2013-10-21 Frank Le Grand <frank.legrand@testplant.com>
|
||||
|
||||
* Source/win32/WIN32Server.m
|
||||
* Source/win32/WIN32Server.h
|
||||
* Source/win32/win32_general.m: Reset the cursors stack
|
||||
when we are on a non-client area of a window. This is
|
||||
a workaround for an issue where we're not getting enough
|
||||
mouse move events when the mouse is moving very fast,
|
||||
and therefore occasionally find ourselves stuck with a
|
||||
cursor set for a rectangle that we've left.
|
||||
|
||||
2013-10-03 Frank Le Grand <frank.legrand@testplant.com>
|
||||
|
||||
* Source/win32/WIN32Server.m
|
||||
* Source/win32/WIN32Server.h
|
||||
* Source/win32/win32_general.m: Fixed processing of
|
||||
WM_SETCURSOR: We now mark the event has handled in our
|
||||
WM_SETCURSOR: We now mark the event as handled in our
|
||||
NSCursor stack is not empty, indicating that we're in a cursor
|
||||
rectangle and we don't want Windows to set the cursor.
|
||||
|
||||
|
|
|
@ -187,6 +187,7 @@ typedef struct w32serverFlags
|
|||
- (void) decodeWM_COMMANDParams: (WPARAM)wParam : (LPARAM)lParam : (HWND)hwnd;
|
||||
- (void) decodeWM_THEMECHANGEDParams: (WPARAM)wParam : (LPARAM)lParam : (HWND)hwnd;
|
||||
- (void) decodeWM_SETCURSORParams: (WPARAM)wParam : (LPARAM)lParam : (HWND)hwnd;
|
||||
- (void) decodeWM_NCMOUSELEAVEParams: (WPARAM)wParam : (LPARAM)lParam : (HWND)hwnd;
|
||||
|
||||
@end
|
||||
|
||||
|
|
|
@ -1508,12 +1508,27 @@ LRESULT CALLBACK windowEnumCallback(HWND hwnd, LPARAM lParam)
|
|||
- (LRESULT) windowEventProc: (HWND)hwnd : (UINT)uMsg
|
||||
: (WPARAM)wParam : (LPARAM)lParam
|
||||
{
|
||||
//NSLog(@"Win32 Event: %x", uMsg);
|
||||
NSEvent *ev = nil;
|
||||
|
||||
[self setFlagsforEventLoop: hwnd];
|
||||
|
||||
switch (uMsg)
|
||||
{
|
||||
case WM_MOUSELEAVE:
|
||||
case WM_NCMOUSELEAVE:
|
||||
case WM_NCMOUSEMOVE:
|
||||
// We have an issue where we're not getting enough
|
||||
// mouse move events when the mouse is moving very
|
||||
// fast, and therefore occasionally found ourselves
|
||||
// with a cursor set for a rectangle that we've left.
|
||||
// To get around that, we reset the cursor stack when
|
||||
// we hit the non-client area. It is not a good
|
||||
// permanent solution, but solves most of our issues
|
||||
// for now.
|
||||
[self decodeWM_NCMOUSELEAVEParams: wParam : lParam : hwnd];
|
||||
break;
|
||||
|
||||
case WM_SIZING:
|
||||
return [self decodeWM_SIZINGParams: hwnd : wParam : lParam];
|
||||
break;
|
||||
|
@ -1661,12 +1676,12 @@ LRESULT CALLBACK windowEnumCallback(HWND hwnd, LPARAM lParam)
|
|||
case WM_NULL:
|
||||
break;
|
||||
|
||||
case WM_NCHITTEST: //MOUSE
|
||||
NSDebugLLog(@"NSEvent", @"Got Message %s for %d", "NCHITTEST", hwnd);
|
||||
break;
|
||||
case WM_NCMOUSEMOVE: //MOUSE
|
||||
NSDebugLLog(@"NSEvent", @"Got Message %s for %d", "NCMOUSEMOVE", hwnd);
|
||||
break;
|
||||
// case WM_NCHITTEST: //MOUSE
|
||||
// NSDebugLLog(@"NSEvent", @"Got Message %s for %d", "NCHITTEST", hwnd);
|
||||
// break;
|
||||
// case WM_NCMOUSEMOVE: //MOUSE
|
||||
// NSDebugLLog(@"NSEvent", @"Got Message %s for %d", "NCMOUSEMOVE", hwnd);
|
||||
// break;
|
||||
case WM_NCLBUTTONDOWN: //MOUSE
|
||||
NSDebugLLog(@"NSEvent", @"Got Message %s for %d", "NCLBUTTONDOWN", hwnd);
|
||||
break;
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
@interface NSCursor (NSCursor_w32_General)
|
||||
|
||||
+ (NSMutableArray *) stack;
|
||||
+ (void) resetStack;
|
||||
|
||||
@end
|
||||
|
||||
|
@ -161,4 +162,9 @@
|
|||
}
|
||||
}
|
||||
|
||||
- (void) decodeWM_NCMOUSELEAVEParams: (WPARAM)wParam : (LPARAM)lParam : (HWND)hwnd
|
||||
{
|
||||
[NSCursor resetStack];
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
Loading…
Reference in a new issue