gtk+ r20737 - in trunk: . gdk gdk/win32
- From: bratsche svn gnome org
- To: svn-commits-list gnome org
- Subject: gtk+ r20737 - in trunk: . gdk gdk/win32
- Date: Wed, 2 Jul 2008 20:22:30 +0000 (UTC)
Author: bratsche
Date: Wed Jul 2 20:22:30 2008
New Revision: 20737
URL: http://svn.gnome.org/viewvc/gtk+?rev=20737&view=rev
Log:
2008-07-02 Cody Russell <bratsche gnome org>
Bug 541305 â [Win32] Scrolling was broken after GdkWindow refactoring
* gdk/win32/gdkwindow-win32.c: Reverted some logic so that scrolling
works again.
* gdk/win32/gdkgeometry-win32.c: Removed some more unnecessary checks.
* gdk/win32/gdkkeys-win32.c: Removed unused variable to fix compile-time
warnings.
Modified:
trunk/ChangeLog
trunk/gdk/gdkwindow.c
trunk/gdk/win32/gdkgeometry-win32.c
trunk/gdk/win32/gdkkeys-win32.c
trunk/gdk/win32/gdkwindow-win32.c
Modified: trunk/gdk/gdkwindow.c
==============================================================================
--- trunk/gdk/gdkwindow.c (original)
+++ trunk/gdk/gdkwindow.c Wed Jul 2 20:22:30 2008
@@ -1305,7 +1305,7 @@
gint *y_offset)
{
GdkWindowObject *private = (GdkWindowObject *)window;
-
+
if (private->paint_stack)
{
GdkWindowPaint *paint = private->paint_stack->data;
@@ -2233,7 +2233,7 @@
g_return_if_fail (window != NULL);
g_return_if_fail (GDK_IS_WINDOW (window));
-
+
if (private->paint_stack)
gdk_window_clear_backing_rect (window, x, y, width, height);
Modified: trunk/gdk/win32/gdkgeometry-win32.c
==============================================================================
--- trunk/gdk/win32/gdkgeometry-win32.c (original)
+++ trunk/gdk/win32/gdkgeometry-win32.c Wed Jul 2 20:22:30 2008
@@ -91,7 +91,7 @@
{
GdkWindowParentPos parent_pos;
GdkWindowImplWin32 *impl;
-
+
g_return_if_fail (GDK_IS_WINDOW (window));
impl = GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW_OBJECT (window)->impl);
@@ -111,16 +111,13 @@
GList *tmp_list;
GdkWindowParentPos parent_pos;
HRGN native_invalidate_region;
-
+
GDK_NOTE (EVENTS, g_print ("gdk_window_scroll: %p %d,%d\n",
GDK_WINDOW_HWND (window), dx, dy));
obj = GDK_WINDOW_OBJECT (window);
impl = GDK_WINDOW_IMPL_WIN32 (obj->impl);
- if (dx == 0 && dy == 0)
- return;
-
/* Move the current invalid region */
if (obj->update_area)
gdk_region_offset (obj->update_area, dx, dy);
@@ -182,9 +179,6 @@
obj = GDK_WINDOW_OBJECT (window);
impl = GDK_WINDOW_IMPL_WIN32 (obj->impl);
- if (dx == 0 && dy == 0)
- return;
-
/* Move the current invalid region */
if (obj->update_area)
gdk_region_offset (obj->update_area, dx, dy);
@@ -270,7 +264,7 @@
dx = x - obj->x;
dy = y - obj->y;
-
+
is_move = dx != 0 || dy != 0;
is_resize = impl->width != width || impl->height != height;
Modified: trunk/gdk/win32/gdkkeys-win32.c
==============================================================================
--- trunk/gdk/win32/gdkkeys-win32.c (original)
+++ trunk/gdk/win32/gdkkeys-win32.c Wed Jul 2 20:22:30 2008
@@ -366,7 +366,6 @@
for (shift = 0; shift < 4; shift++)
{
guint *ksymp = keysym_tab + vk*4 + shift;
- guchar chars[2];
set_shift_vks (key_state, shift);
Modified: trunk/gdk/win32/gdkwindow-win32.c
==============================================================================
--- trunk/gdk/win32/gdkwindow-win32.c (original)
+++ trunk/gdk/win32/gdkwindow-win32.c Wed Jul 2 20:22:30 2008
@@ -1196,30 +1196,131 @@
}
static void
-gdk_win32_window_move_resize (GdkWindow *window,
- gboolean with_move,
- gint x,
- gint y,
- gint width,
- gint height)
+gdk_win32_window_move (GdkWindow *window,
+ gint x, gint y)
+{
+ GdkWindowObject *private = (GdkWindowObject *)window;
+ GdkWindowImplWin32 *impl;
+
+ g_return_if_fail (GDK_IS_WINDOW (window));
+
+ if (GDK_WINDOW_DESTROYED (window))
+ return;
+
+ GDK_NOTE (MISC, g_print ("gdk_window_move: %p: %+d%+d\n",
+ GDK_WINDOW_HWND (window), x, y));
+
+ impl = GDK_WINDOW_IMPL_WIN32 (private->impl);
+
+ if (private->state & GDK_WINDOW_STATE_FULLSCREEN)
+ return;
+
+ /* Don't check GDK_WINDOW_TYPE (private) == GDK_WINDOW_CHILD.
+ * Foreign windows (another app's windows) might be children of our
+ * windows! Especially in the case of gtkplug/socket.
+ */
+ if (GetAncestor (GDK_WINDOW_HWND (window), GA_PARENT) != GetDesktopWindow ())
+ {
+ _gdk_window_move_resize_child (window, x, y, impl->width, impl->height);
+ }
+ else
+ {
+ RECT outer_rect;
+
+ get_outer_rect (window, impl->width, impl->height, &outer_rect);
+
+ adjust_for_gravity_hints (impl, &outer_rect, &x, &y);
+
+ GDK_NOTE (MISC, g_print ("... SetWindowPos(%p,NULL,%d,%d,0,0,"
+ "NOACTIVATE|NOSIZE|NOZORDER)\n",
+ GDK_WINDOW_HWND (window),
+ x - _gdk_offset_x, y - _gdk_offset_y));
+
+ API_CALL (SetWindowPos, (GDK_WINDOW_HWND (window), NULL,
+ x - _gdk_offset_x, y - _gdk_offset_y, 0, 0,
+ SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOZORDER));
+ }
+}
+
+static void
+gdk_win32_window_resize (GdkWindow *window,
+ gint width, gint height)
{
GdkWindowObject *private = (GdkWindowObject*) window;
GdkWindowImplWin32 *impl;
+ g_return_if_fail (GDK_IS_WINDOW (window));
+
+ if (GDK_WINDOW_DESTROYED (window))
+ return;
+
if (width < 1)
width = 1;
if (height < 1)
height = 1;
-
+
+ GDK_NOTE (MISC, g_print ("gdk_window_resize: %p: %dx%d\n",
+ GDK_WINDOW_HWND (window), width, height));
+
+ impl = GDK_WINDOW_IMPL_WIN32 (private->impl);
+
+ if (private->state & GDK_WINDOW_STATE_FULLSCREEN)
+ return;
+
+ if (GetAncestor (GDK_WINDOW_HWND (window), GA_PARENT) != GetDesktopWindow ())
+ {
+ _gdk_window_move_resize_child (window, private->x, private->y, width, height);
+ }
+ else
+ {
+ RECT outer_rect;
+
+ get_outer_rect (window, width, height, &outer_rect);
+
+ GDK_NOTE (MISC, g_print ("... SetWindowPos(%p,NULL,0,0,%ld,%ld,"
+ "NOACTIVATE|NOMOVE|NOZORDER)\n",
+ GDK_WINDOW_HWND (window),
+ outer_rect.right - outer_rect.left,
+ outer_rect.bottom - outer_rect.top));
+
+ API_CALL (SetWindowPos, (GDK_WINDOW_HWND (window), NULL,
+ 0, 0,
+ outer_rect.right - outer_rect.left,
+ outer_rect.bottom - outer_rect.top,
+ SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOZORDER));
+ private->resize_count += 1;
+ }
+}
+
+static void
+gdk_win32_window_move_resize_internal (GdkWindow *window,
+ gint x,
+ gint y,
+ gint width,
+ gint height)
+{
+ GdkWindowObject *private = (GdkWindowObject*) window;
+ GdkWindowImplWin32 *impl;
+
+ g_return_if_fail (GDK_IS_WINDOW (window));
+
+ if (GDK_WINDOW_DESTROYED (window))
+ return;
+
+ if (width < 1)
+ width = 1;
+ if (height < 1)
+ height = 1;
+
impl = GDK_WINDOW_IMPL_WIN32 (private->impl);
if (private->state & GDK_WINDOW_STATE_FULLSCREEN)
return;
GDK_NOTE (MISC, g_print ("gdk_window_move_resize: %p: %dx%d %+d%+d\n",
- GDK_WINDOW_HWND (window),
- width, height, x, y));
-
+ GDK_WINDOW_HWND (window),
+ width, height, x, y));
+
if (GetAncestor (GDK_WINDOW_HWND (window), GA_PARENT) != GetDesktopWindow ())
{
_gdk_window_move_resize_child (window, x, y, width, height);
@@ -1233,23 +1334,42 @@
adjust_for_gravity_hints (impl, &outer_rect, &x, &y);
GDK_NOTE (MISC, g_print ("... SetWindowPos(%p,NULL,%d,%d,%ld,%ld,"
- "NOACTIVATE|NOZORDER)\n",
- GDK_WINDOW_HWND (window),
- x - _gdk_offset_x, y - _gdk_offset_y,
- outer_rect.right - outer_rect.left,
- outer_rect.bottom - outer_rect.top));
-
- UINT uflags = SWP_NOACTIVATE | SWP_NOZORDER;
- if (with_move == FALSE)
- uflags |= SWP_NOMOVE;
- if (width == -1 || height == -1)
- uflags |= SWP_NOSIZE;
+ "NOACTIVATE|NOZORDER)\n",
+ GDK_WINDOW_HWND (window),
+ x - _gdk_offset_x, y - _gdk_offset_y,
+ outer_rect.right - outer_rect.left,
+ outer_rect.bottom - outer_rect.top));
API_CALL (SetWindowPos, (GDK_WINDOW_HWND (window), NULL,
- x - _gdk_offset_x, y - _gdk_offset_y,
- outer_rect.right - outer_rect.left,
- outer_rect.bottom - outer_rect.top,
- uflags));
+ x - _gdk_offset_x, y - _gdk_offset_y,
+ outer_rect.right - outer_rect.left,
+ outer_rect.bottom - outer_rect.top,
+ SWP_NOACTIVATE | SWP_NOZORDER));
+ }
+}
+
+static void
+gdk_win32_window_move_resize (GdkWindow *window,
+ gboolean with_move,
+ gint x,
+ gint y,
+ gint width,
+ gint height)
+{
+ if (with_move && (width < 0 && height < 0))
+ {
+ gdk_win32_window_move (window, x, y);
+ }
+ else
+ {
+ if (with_move)
+ {
+ gdk_win32_window_move_resize_internal (window, x, y, width, height);
+ }
+ else
+ {
+ gdk_win32_window_resize (window, width, height);
+ }
}
}
@@ -3439,9 +3559,14 @@
#else
if (modal)
- _gdk_push_modal_window (window);
+ {
+ _gdk_push_modal_window (window);
+ gdk_window_raise (window);
+ }
else
- _gdk_remove_modal_window (window);
+ {
+ _gdk_remove_modal_window (window);
+ }
#endif
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]