Author: rmottola
Date: Mon Dec 29 13:49:17 2014
New Revision: 38270
URL: http://svn.gna.org/viewcvs/gnustep?rev=38270&view=rev
Log:
Fix off-by-one array access, return NSZeroRect immediately if no other
operations are running
Modified:
apps/gworkspace/trunk/ChangeLog
apps/gworkspace/trunk/Operation/Operation.m
Modified: apps/gworkspace/trunk/ChangeLog
URL:
http://svn.gna.org/viewcvs/gnustep/apps/gworkspace/trunk/ChangeLog?rev=38270&r1=38269&r2=38270&view=diff
==============================================================================
--- apps/gworkspace/trunk/ChangeLog (original)
+++ apps/gworkspace/trunk/ChangeLog Mon Dec 29 13:49:17 2014
@@ -1,3 +1,8 @@
+2014-12-29 Riccardo Mottola <[email protected]>
+
+ * Operation/Operation.m (rectForFileOpWindow)
+ Fix off-by-one array access, return NSZeroRect immediately if no other
operations are running.
+
2014-11-16 Riccardo Mottola <[email protected]>
* Operation/FileOpInfo.m
Modified: apps/gworkspace/trunk/Operation/Operation.m
URL:
http://svn.gna.org/viewcvs/gnustep/apps/gworkspace/trunk/Operation/Operation.m?rev=38270&r1=38269&r2=38270&view=diff
==============================================================================
--- apps/gworkspace/trunk/Operation/Operation.m (original)
+++ apps/gworkspace/trunk/Operation/Operation.m Mon Dec 29 13:49:17 2014
@@ -362,38 +362,46 @@
NSRect scr = [[NSScreen mainScreen] visibleFrame];
NSRect wrect = NSZeroRect;
NSUInteger i;
-
- #define WMARGIN 50
- #define WSHIFT 50
-
+
+#define WMARGIN 40
+#define WSHIFT 40
+
+ if ([fileOperations count] == 0)
+ return wrect;
+
scr.origin.x += WMARGIN;
scr.origin.y += WMARGIN;
scr.size.width -= (WMARGIN * 2);
scr.size.height -= (WMARGIN * 2);
-
- for (i = [fileOperations count]; i > 0; i--) {
- FileOpInfo *op = [fileOperations objectAtIndex: i];
-
- if ([op win]) {
- NSRect wr;
-
- [op getWinRect: &wr];
- if (NSEqualRects(wr, NSZeroRect) == NO) {
- wrect = NSMakeRect(wr.origin.x + WSHIFT,
- wr.origin.y - wr.size.height - WSHIFT,
- wr.size.width,
- wr.size.height);
-
- if (NSContainsRect(scr, wrect) == NO) {
- wrect = NSMakeRect(scr.origin.x,
- scr.size.height - wr.size.height,
- wr.size.width,
- wr.size.height);
- break;
+
+ i = [fileOperations count];
+ while (i > 0 && NSEqualRects(wrect, NSZeroRect) == YES)
+ {
+ FileOpInfo *op = [fileOperations objectAtIndex: i-1];
+
+ if ([op win])
+ {
+ NSRect wr;
+
+ [op getWinRect: &wr];
+ if (NSEqualRects(wr, NSZeroRect) == NO)
+ {
+ wrect = NSMakeRect(wr.origin.x + WSHIFT,
+ wr.origin.y - wr.size.height - WSHIFT,
+ wr.size.width,
+ wr.size.height);
+
+ if (NSContainsRect(scr, wrect) == NO)
+ {
+ wrect = NSMakeRect(scr.origin.x,
+ scr.size.height - wr.size.height,
+ wr.size.width,
+ wr.size.height);
+ }
+ }
}
- }
- }
- }
+ i--;
+ }
return wrect;
}
_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs