gtk+ r20726 - in trunk: . gdk/win32



Author: bratsche
Date: Tue Jul  1 23:13:26 2008
New Revision: 20726
URL: http://svn.gnome.org/viewvc/gtk+?rev=20726&view=rev

Log:
2008-07-01  Cody Russell  <bratsche gnome org>

        Bug 539164 â Windows' System Menu blocks main loop

        * gdk/win32/gdkevents-win32.c:	Use a modal timer proc in between
	receiving WM_ENTERMENULOOP and	WM_EXITMENULOOP	and pump	the
	GLib mainloop from there.



Modified:
   trunk/ChangeLog
   trunk/gdk/win32/gdkevents-win32.c

Modified: trunk/gdk/win32/gdkevents-win32.c
==============================================================================
--- trunk/gdk/win32/gdkevents-win32.c	(original)
+++ trunk/gdk/win32/gdkevents-win32.c	Tue Jul  1 23:13:26 2008
@@ -138,7 +138,7 @@
 #endif
 
 static gboolean in_ime_composition = FALSE;
-static UINT     resize_timer;
+static UINT     modal_timer;
 
 static int debug_indent = 0;
 
@@ -2030,7 +2030,7 @@
 }
 
 static VOID CALLBACK
-resize_timer_proc (HWND     hwnd,
+modal_timer_proc (HWND     hwnd,
 		   UINT     msg,
 		   UINT     id,
 		   DWORD    time)
@@ -2972,12 +2972,22 @@
 
     case WM_ENTERSIZEMOVE:
       _sizemove_in_progress = TRUE;
-      resize_timer = SetTimer (NULL, 0, 20, resize_timer_proc);
+      modal_timer = SetTimer (NULL, 0, 20, modal_timer_proc);
       break;
 
     case WM_EXITSIZEMOVE:
       _sizemove_in_progress = FALSE;
-      KillTimer (NULL, resize_timer);
+      KillTimer (NULL, modal_timer);
+      break;
+
+    case WM_ENTERMENULOOP:
+      _sizemove_in_progress = TRUE;
+      modal_timer = SetTimer (NULL, 0, 20, modal_timer_proc);
+      break;
+
+    case WM_EXITMENULOOP:
+      _sizemove_in_progress = FALSE;
+      KillTimer (NULL, modal_timer);
       break;
 
     case WM_WINDOWPOSCHANGED :



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]