summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Breuer <hans@breuer.org>2004-05-02 13:20:49 +0000
committerHans Breuer <hans@src.gnome.org>2004-05-02 13:20:49 +0000
commit6efc9a6a1284194ceab50fe8fb2c138068b8c7f8 (patch)
treee63fa5258d4370aaf7ca683d7a7174db4904bc84
parenta516adebbed6d4c7ed9b8b4c3719ae623f989b01 (diff)
downloadgdk-pixbuf-6efc9a6a1284194ceab50fe8fb2c138068b8c7f8.tar.gz
don't modify the passed in GdkSegment(s) in place, we may get them again
2004-05-02 Hans Breuer <hans@breuer.org> * gdk/win32/gdkdrawable-win32.c (draw_segments) : don't modify the passed in GdkSegment(s) in place, we may get them again to draw at the same place. Fixes bug #129095, bug #137177, ... (draw_segments) draw the end pixel again to get the pixmap mask right, fixes bug #126710, #130202 * gdk/win32/gdkwindow-win32.c : use SetForegroundWindow, fixes bug #106013, John Ehresman * gtk/makefile.msc.in : don't try to link gtk.res but use gtk-win32.res (as supposed to be fixed below :)
-rw-r--r--ChangeLog15
-rw-r--r--ChangeLog.pre-2-1015
-rw-r--r--ChangeLog.pre-2-415
-rw-r--r--ChangeLog.pre-2-615
-rw-r--r--ChangeLog.pre-2-815
-rw-r--r--gdk/win32/gdkdrawable-win32.c42
-rw-r--r--gdk/win32/gdkwindow-win32.c15
-rw-r--r--gtk/makefile.msc.in2
8 files changed, 116 insertions, 18 deletions
diff --git a/ChangeLog b/ChangeLog
index 524874712..2c734bedf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2004-05-02 Hans Breuer <hans@breuer.org>
+
+ * gdk/win32/gdkdrawable-win32.c (draw_segments) : don't
+ modify the passed in GdkSegment(s) in place, we may get
+ them again to draw at the same place. Fixes bug #129095,
+ bug #137177, ...
+ (draw_segments) draw the end pixel again to get the
+ pixmap mask right, fixes bug #126710, #130202
+
+ * gdk/win32/gdkwindow-win32.c : use SetForegroundWindow,
+ fixes bug #106013, John Ehresman
+
+ * gtk/makefile.msc.in : don't try to link gtk.res but
+ use gtk-win32.res (as supposed to be fixed below :)
+
2004-05-01 Hans Breuer <hans@breuer.org>
* tests/Makefile.am : tests/makefile.msc is in CVS for
diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10
index 524874712..2c734bedf 100644
--- a/ChangeLog.pre-2-10
+++ b/ChangeLog.pre-2-10
@@ -1,3 +1,18 @@
+2004-05-02 Hans Breuer <hans@breuer.org>
+
+ * gdk/win32/gdkdrawable-win32.c (draw_segments) : don't
+ modify the passed in GdkSegment(s) in place, we may get
+ them again to draw at the same place. Fixes bug #129095,
+ bug #137177, ...
+ (draw_segments) draw the end pixel again to get the
+ pixmap mask right, fixes bug #126710, #130202
+
+ * gdk/win32/gdkwindow-win32.c : use SetForegroundWindow,
+ fixes bug #106013, John Ehresman
+
+ * gtk/makefile.msc.in : don't try to link gtk.res but
+ use gtk-win32.res (as supposed to be fixed below :)
+
2004-05-01 Hans Breuer <hans@breuer.org>
* tests/Makefile.am : tests/makefile.msc is in CVS for
diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4
index 524874712..2c734bedf 100644
--- a/ChangeLog.pre-2-4
+++ b/ChangeLog.pre-2-4
@@ -1,3 +1,18 @@
+2004-05-02 Hans Breuer <hans@breuer.org>
+
+ * gdk/win32/gdkdrawable-win32.c (draw_segments) : don't
+ modify the passed in GdkSegment(s) in place, we may get
+ them again to draw at the same place. Fixes bug #129095,
+ bug #137177, ...
+ (draw_segments) draw the end pixel again to get the
+ pixmap mask right, fixes bug #126710, #130202
+
+ * gdk/win32/gdkwindow-win32.c : use SetForegroundWindow,
+ fixes bug #106013, John Ehresman
+
+ * gtk/makefile.msc.in : don't try to link gtk.res but
+ use gtk-win32.res (as supposed to be fixed below :)
+
2004-05-01 Hans Breuer <hans@breuer.org>
* tests/Makefile.am : tests/makefile.msc is in CVS for
diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6
index 524874712..2c734bedf 100644
--- a/ChangeLog.pre-2-6
+++ b/ChangeLog.pre-2-6
@@ -1,3 +1,18 @@
+2004-05-02 Hans Breuer <hans@breuer.org>
+
+ * gdk/win32/gdkdrawable-win32.c (draw_segments) : don't
+ modify the passed in GdkSegment(s) in place, we may get
+ them again to draw at the same place. Fixes bug #129095,
+ bug #137177, ...
+ (draw_segments) draw the end pixel again to get the
+ pixmap mask right, fixes bug #126710, #130202
+
+ * gdk/win32/gdkwindow-win32.c : use SetForegroundWindow,
+ fixes bug #106013, John Ehresman
+
+ * gtk/makefile.msc.in : don't try to link gtk.res but
+ use gtk-win32.res (as supposed to be fixed below :)
+
2004-05-01 Hans Breuer <hans@breuer.org>
* tests/Makefile.am : tests/makefile.msc is in CVS for
diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8
index 524874712..2c734bedf 100644
--- a/ChangeLog.pre-2-8
+++ b/ChangeLog.pre-2-8
@@ -1,3 +1,18 @@
+2004-05-02 Hans Breuer <hans@breuer.org>
+
+ * gdk/win32/gdkdrawable-win32.c (draw_segments) : don't
+ modify the passed in GdkSegment(s) in place, we may get
+ them again to draw at the same place. Fixes bug #129095,
+ bug #137177, ...
+ (draw_segments) draw the end pixel again to get the
+ pixmap mask right, fixes bug #126710, #130202
+
+ * gdk/win32/gdkwindow-win32.c : use SetForegroundWindow,
+ fixes bug #106013, John Ehresman
+
+ * gtk/makefile.msc.in : don't try to link gtk.res but
+ use gtk-win32.res (as supposed to be fixed below :)
+
2004-05-01 Hans Breuer <hans@breuer.org>
* tests/Makefile.am : tests/makefile.msc is in CVS for
diff --git a/gdk/win32/gdkdrawable-win32.c b/gdk/win32/gdkdrawable-win32.c
index acc6757f7..cd3c87418 100644
--- a/gdk/win32/gdkdrawable-win32.c
+++ b/gdk/win32/gdkdrawable-win32.c
@@ -1179,13 +1179,17 @@ draw_segments (GdkGCWin32 *gcwin32,
nsegs = va_arg (args, gint);
if (x_offset != 0 || y_offset != 0)
- for (i = 0; i < nsegs; i++)
- {
- segs[i].x1 -= x_offset;
- segs[i].y1 -= y_offset;
- segs[i].x2 -= x_offset;
- segs[i].y2 -= y_offset;
- }
+ {
+ /* must not modify in place, but could splice in the offset all below */
+ segs = g_memdup (segs, nsegs * sizeof (GdkSegment));
+ for (i = 0; i < nsegs; i++)
+ {
+ segs[i].x1 -= x_offset;
+ segs[i].y1 -= y_offset;
+ segs[i].x2 -= x_offset;
+ segs[i].y2 -= y_offset;
+ }
+ }
if (gcwin32->pen_dashes && !IS_WIN_NT ())
{
@@ -1237,18 +1241,32 @@ draw_segments (GdkGCWin32 *gcwin32,
* e.g. at xpm icons produced with gdk_pixbuf_new_from_xpm_data trough
* gdk_pixbuf_render_threshold_alpha (testgtk folder icon or
* Dia's toolbox icons) but only on win9x ... --hb
+ *
+ * Update : see bug #81895 and bug #126710 why this is finally
+ * needed on any win32 platform ;-)
*/
- if (gcwin32->pen_width <= 1 && !IS_WIN_NT())
+ if (gcwin32->pen_width <= 1)
{
GdkSegment *ps = &segs[nsegs-1];
- int xc = (ps->y2 == ps->y1) ? 0 : ((ps->x1 < ps->x2) ? 1 : -1);
- int yc = (ps->x2 == ps->x1) ? 0 : ((ps->y1 < ps->y2) ? 1 : -1);
- /* don't forget single point lines */
- xc = (0 == xc && 0 == yc) ? 1 : xc;
+ int xc = 0, yc = 0;
+
+ if (ps->y2 == ps->y1 && ps->x2 == ps->x1)
+ xc = 1; /* just a point */
+ else if (ps->y2 == ps->y1)
+ xc = (ps->x1 < ps->x2) ? 1 : -1; /* advance x only */
+ else if (ps->x2 == ps->x1)
+ yc = (ps->y1 < ps->y2) ? 1 : -1; /* advance y only */
+ else
+ {
+ xc = (ps->x1 < ps->x2) ? 1 : -1;
+ yc = (ps->y1 < ps->y2) ? 1 : -1;
+ }
GDI_CALL (LineTo, (hdc, ps->x2 + xc, ps->y2 + yc));
}
}
+ if (x_offset != 0 || y_offset != 0)
+ g_free (segs);
}
static void
diff --git a/gdk/win32/gdkwindow-win32.c b/gdk/win32/gdkwindow-win32.c
index 958df71c9..ae67429e6 100644
--- a/gdk/win32/gdkwindow-win32.c
+++ b/gdk/win32/gdkwindow-win32.c
@@ -1041,11 +1041,16 @@ show_window_internal (GdkWindow *window,
ShowWindow (GDK_WINDOW_HWND (window), SW_SHOWNORMAL);
if (raise)
- if (GDK_WINDOW_TYPE (window) == GDK_WINDOW_TEMP)
- SetWindowPos (GDK_WINDOW_HWND (window), HWND_TOPMOST, 0, 0, 0, 0,
- SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
- else
- BringWindowToTop (GDK_WINDOW_HWND (window));
+ {
+ if (GDK_WINDOW_TYPE (window) == GDK_WINDOW_TEMP)
+ SetWindowPos (GDK_WINDOW_HWND (window), HWND_TOPMOST, 0, 0, 0, 0,
+ SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
+ else if (GDK_WINDOW_TYPE (window) == GDK_WINDOW_TOPLEVEL
+ || GDK_WINDOW_TYPE (window) == GDK_WINDOW_DIALOG)
+ SetForegroundWindow (GDK_WINDOW_HWND (window));
+ else
+ BringWindowToTop (GDK_WINDOW_HWND (window));
+ }
else if (old_active_window != GDK_WINDOW_HWND (window))
SetActiveWindow (old_active_window);
}
diff --git a/gtk/makefile.msc.in b/gtk/makefile.msc.in
index 59d578f03..432c8862a 100644
--- a/gtk/makefile.msc.in
+++ b/gtk/makefile.msc.in
@@ -491,7 +491,7 @@ gtk-win32.res : gtk-win32.rc
# Linking:
#
libgtk-win32-$(GTK_VER)-0.dll : $(gtk_OBJECTS) gtk.def gtk-win32.res
- $(CC) $(CFLAGS) -LD -Fm -Fe$@ $(gtk_OBJECTS) gtk.res \
+ $(CC) $(CFLAGS) -LD -Fm -Fe$@ $(gtk_OBJECTS) gtk-win32.res \
$(GDK_LIBS) $(GDK_PIXBUF_LIBS) $(PANGO_LIBS) $(INTL_LIBS) $(GLIB_LIBS) \
gdi32.lib user32.lib advapi32.lib wsock32.lib shell32.lib \
$(LDFLAGS) /implib:gtk-win32-$(GTK_VER).lib /def:gtk.def