Handle remaining problems with cursor rects.

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@23041 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
fredkiefer 2006-06-09 17:33:11 +00:00
parent db7974064c
commit 2b448fe8a2
4 changed files with 12 additions and 21 deletions

View file

@ -1,3 +1,10 @@
2006-06-09 Fred Kiefer <FredKiefer@gmx.de>
* Source/NSView.m (-discardCursorRects)
* Source/NSWindow.m (-invalidateCursorRectsForView:): Updated
version of patch for improved handling of cursor rects to fix bug #5871.
Patch by Mircea Trache <aer@shaw.ca>.
2006-06-08 00:00 Gregory John Casamento <greg_casamento@yahoo.com> 2006-06-08 00:00 Gregory John Casamento <greg_casamento@yahoo.com>
* Headers/Additions/GNUstepGUI/GSNibContainer.h: Minor cleanup. * Headers/Additions/GNUstepGUI/GSNibContainer.h: Minor cleanup.

View file

@ -303,6 +303,8 @@ NSSavePanel.h \
NSScreen.h \ NSScreen.h \
NSScrollView.h \ NSScrollView.h \
NSScroller.h \ NSScroller.h \
NSSearchField.h \
NSSearchFieldCell.h \
NSSecureTextField.h \ NSSecureTextField.h \
NSSelection.h \ NSSelection.h \
NSSlider.h \ NSSlider.h \

View file

@ -2629,7 +2629,7 @@ Returns YES iff any scrolling was done.
if (count > 0) if (count > 0)
{ {
GSTrackingRect *rects[count]; GSTrackingRect *rects[count];
NSPoint loc = [_window mouseLocationOutsideOfEventStream]; NSPoint loc = ((struct NSWindow_struct *)_window)->_lastPoint;
unsigned i; unsigned i;
[_cursor_rects getObjects: rects]; [_cursor_rects getObjects: rects];
@ -2639,7 +2639,7 @@ Returns YES iff any scrolling was done.
GSTrackingRect *r = rects[i]; GSTrackingRect *r = rects[i];
if (NSMouseInRect(loc, r->rectangle, NO)) if (NSMouseInRect(loc, r->rectangle, NO))
{ {
[[r owner] mouseExited: nil]; [r->owner mouseExited: nil];
} }
[r invalidate]; [r invalidate];
} }

View file

@ -2344,25 +2344,7 @@ discardCursorRectsForView(NSView *theView)
{ {
if (((NSViewPtr)aView)->_rFlags.valid_rects) if (((NSViewPtr)aView)->_rFlags.valid_rects)
{ {
unsigned count = [((NSViewPtr)aView)->_cursor_rects count]; [aView discardCursorRects];
if (count > 0)
{
GSTrackingRect *rects[count];
unsigned i;
[((NSViewPtr)aView)->_cursor_rects getObjects: rects];
for (i = 0; i < count; ++i)
{
GSTrackingRect *r = rects[i];
if (NSMouseInRect(_lastPoint, r->rectangle, NO))
{
[[r owner] mouseExited: nil];
}
[r invalidate];
}
}
((NSViewPtr)aView)->_rFlags.valid_rects = 0;
if (_f.cursor_rects_valid) if (_f.cursor_rects_valid)
{ {