home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2007 February
/
PCWorld_2007-02_cd.bin
/
komunikace
/
azureus
/
Azureus_2.5.0.0_Win32.setup.exe
/
swt.jar
/
patches.txt
Wrap
Text File
|
2006-07-02
|
4KB
|
103 lines
# Patch for SWT 3.2 final (build 3232) source code
# This patch fixes 2 sets of GDI leaks in Windows 98
#
diff -u6r org/eclipse/swt/custom/CTabFolder.java org/eclipse/swt/custom/CTabFolder.java
--- org/eclipse/swt/custom/CTabFolder.java 2005-12-13 11:18:10.000000000 +0900
+++ org/eclipse/swt/custom/CTabFolder.java 2006-01-19 16:20:58.000000000 +0900
@@ -768,12 +768,13 @@
} else {
gc.drawLine(x1, y2, x2, y2); // bottom
}
}
}
+// XXX TuxPaper: store gc's font and restore (Win98 Resource Leak)
void drawChevron(GC gc) {
if (chevronRect.width == 0 || chevronRect.height == 0) return;
// draw chevron (10x7)
Display display = getDisplay();
Point dpi = display.getDPI();
int fontHeight = 72 * 10 / dpi.y;
@@ -796,56 +797,62 @@
}
String chevronString = count > 99 ? "99+" : String.valueOf(count); //$NON-NLS-1$
switch (chevronImageState) {
case NORMAL: {
Color chevronBorder = single ? getSelectionForeground() : getForeground();
gc.setForeground(chevronBorder);
+ Font oldFont = gc.getFont();
gc.setFont(f);
gc.drawLine(x,y, x+2,y+2);
gc.drawLine(x+2,y+2, x,y+4);
gc.drawLine(x+1,y, x+3,y+2);
gc.drawLine(x+3,y+2, x+1,y+4);
gc.drawLine(x+4,y, x+6,y+2);
gc.drawLine(x+6,y+2, x+5,y+4);
gc.drawLine(x+5,y, x+7,y+2);
gc.drawLine(x+7,y+2, x+4,y+4);
gc.drawString(chevronString, x+7, y+3, true);
+ gc.setFont(oldFont);
break;
}
case HOT: {
gc.setForeground(display.getSystemColor(BUTTON_BORDER));
gc.setBackground(display.getSystemColor(BUTTON_FILL));
+ Font oldFont = gc.getFont();
gc.setFont(f);
gc.fillRoundRectangle(chevronRect.x, chevronRect.y, chevronRect.width, chevronRect.height, 6, 6);
gc.drawRoundRectangle(chevronRect.x, chevronRect.y, chevronRect.width - 1, chevronRect.height - 1, 6, 6);
gc.drawLine(x,y, x+2,y+2);
gc.drawLine(x+2,y+2, x,y+4);
gc.drawLine(x+1,y, x+3,y+2);
gc.drawLine(x+3,y+2, x+1,y+4);
gc.drawLine(x+4,y, x+6,y+2);
gc.drawLine(x+6,y+2, x+5,y+4);
gc.drawLine(x+5,y, x+7,y+2);
gc.drawLine(x+7,y+2, x+4,y+4);
gc.drawString(chevronString, x+7, y+3, true);
+ gc.setFont(oldFont);
break;
}
case SELECTED: {
gc.setForeground(display.getSystemColor(BUTTON_BORDER));
gc.setBackground(display.getSystemColor(BUTTON_FILL));
+ Font oldFont = gc.getFont();
gc.setFont(f);
gc.fillRoundRectangle(chevronRect.x, chevronRect.y, chevronRect.width, chevronRect.height, 6, 6);
gc.drawRoundRectangle(chevronRect.x, chevronRect.y, chevronRect.width - 1, chevronRect.height - 1, 6, 6);
gc.drawLine(x+1,y+1, x+3,y+3);
gc.drawLine(x+3,y+3, x+1,y+5);
gc.drawLine(x+2,y+1, x+4,y+3);
gc.drawLine(x+4,y+3, x+2,y+5);
gc.drawLine(x+5,y+1, x+7,y+3);
gc.drawLine(x+7,y+3, x+6,y+5);
gc.drawLine(x+6,y+1, x+8,y+3);
gc.drawLine(x+8,y+3, x+5,y+5);
gc.drawString(chevronString, x+8, y+4, true);
+ gc.setFont(oldFont);
break;
}
}
f.dispose();
}
void drawMaximize(GC gc) {
diff -u6r org/eclipse/swt/widgets/Widget.java org/eclipse/swt/widgets/Widget.java
--- org/eclipse/swt/widgets/Widget.java 2006-02-01 12:17:21.171875000 +0900
+++ org/eclipse/swt/widgets/Widget.java 2006-02-14 22:57:41.437500000 +0900
@@ -2028,13 +2028,14 @@
OS.GetRgnBox (rgn, rect);
int width = rect.right - rect.left;
int height = rect.bottom - rect.top;
if (width != 0 && height != 0) {
int hDC = gc.handle;
OS.SelectClipRgn (hDC, rgn);
- OS.SetMetaRgn (hDC);
+ //XXX Win98 Resource Leak
+ //OS.SetMetaRgn (hDC);
Event event = new Event ();
event.gc = gc;
event.x = rect.left;
event.y = rect.top;
event.width = width;
event.height = height;