mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-05-29 21:27:40 +00:00
Prevent duplicate the cursor with -push.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@36848 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
a5412c1f42
commit
5cfee62130
3 changed files with 32 additions and 1 deletions
|
@ -35,11 +35,13 @@
|
|||
|
||||
#import "AppKit/NSColor.h"
|
||||
#import "AppKit/NSCursor.h"
|
||||
#import "AppKit/NSEvent.h"
|
||||
#import "AppKit/NSGraphics.h"
|
||||
#import "AppKit/NSImage.h"
|
||||
#import "AppKit/NSBitmapImageRep.h"
|
||||
|
||||
#import "GNUstepGUI/GSDisplayServer.h"
|
||||
#import "GNUstepGUI/GSTrackingRect.h"
|
||||
|
||||
// Class variables
|
||||
static NSMutableArray *gnustep_gui_cursor_stack;
|
||||
|
@ -315,6 +317,8 @@ NSCursor *getStandardCursor(NSString *name, int style)
|
|||
*/
|
||||
- (id) init
|
||||
{
|
||||
_windowNum = -1;
|
||||
_cursorRect = NSZeroRect;
|
||||
return [self initWithImage: nil hotSpot: NSZeroPoint];
|
||||
}
|
||||
|
||||
|
@ -440,11 +444,26 @@ backgroundColorHint:(NSColor *)bg
|
|||
}
|
||||
else if (_cursor_flags.is_set_on_mouse_exited == NO)
|
||||
{
|
||||
NSInteger num = [theEvent windowNumber];
|
||||
GSTrackingRect *r =(GSTrackingRect*)[theEvent userData];
|
||||
/*
|
||||
* Undocumented behavior - if a cursor is not set on exit or entry,
|
||||
* we assume a push-pop situation instead.
|
||||
*/
|
||||
[self push];
|
||||
|
||||
/* First check if the cursor rect is currently updated. This prevent
|
||||
* add the same cursor for the same cursor rect. This happen sometimes
|
||||
* when the window become the main/key window, and the cursor is over
|
||||
* a cursor rect.
|
||||
*/
|
||||
if ( !(NSEqualRects(_cursorRect, r->rectangle) &&
|
||||
(_windowNum == num) &&
|
||||
[gnustep_gui_current_cursor isEqual: self]) )
|
||||
{
|
||||
[self push];
|
||||
_windowNum = num;
|
||||
_cursorRect = r->rectangle;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -466,6 +485,8 @@ backgroundColorHint:(NSColor *)bg
|
|||
* we assume a push-pop situation instead.
|
||||
*/
|
||||
[self pop];
|
||||
_windowNum = -1;
|
||||
_cursorRect = NSZeroRect;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue