diff --git a/ChangeLog b/ChangeLog index b0ff70ee44..5ce8f4c50c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2006-02-08 John Ehresman + + * gdk/win32/gdkevents-win32.c (gdk_event_translate) + + * gdk/win32/gdkwindow-win32.c (show_window_internal) + (gdk_window_raise): Call SetWindowPos() instead of + SetForegroundWindow() or BringWindowToTop() if the window + shouldn't accept focus. (#327375) + 2006-02-08 John Ehresman * gdk/win32/gdkwindow-win32.c: Let gdk_window_set_decorations() diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index b0ff70ee44..5ce8f4c50c 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,12 @@ +2006-02-08 John Ehresman + + * gdk/win32/gdkevents-win32.c (gdk_event_translate) + + * gdk/win32/gdkwindow-win32.c (show_window_internal) + (gdk_window_raise): Call SetWindowPos() instead of + SetForegroundWindow() or BringWindowToTop() if the window + shouldn't accept focus. (#327375) + 2006-02-08 John Ehresman * gdk/win32/gdkwindow-win32.c: Let gdk_window_set_decorations() diff --git a/gdk/win32/gdkevents-win32.c b/gdk/win32/gdkevents-win32.c index e47d8fd73c..53ee6c4a6b 100644 --- a/gdk/win32/gdkevents-win32.c +++ b/gdk/win32/gdkevents-win32.c @@ -2921,7 +2921,8 @@ gdk_event_translate (MSG *msg, break; case WM_MOUSEACTIVATE: - if (gdk_window_get_window_type (window) == GDK_WINDOW_TEMP) + if (gdk_window_get_window_type (window) == GDK_WINDOW_TEMP + || !((GdkWindowObject *)window)->accept_focus) { *ret_valp = MA_NOACTIVATE; return_val = TRUE; diff --git a/gdk/win32/gdkwindow-win32.c b/gdk/win32/gdkwindow-win32.c index 57105c597a..cf9a8ebcfd 100644 --- a/gdk/win32/gdkwindow-win32.c +++ b/gdk/win32/gdkwindow-win32.c @@ -1072,7 +1072,14 @@ show_window_internal (GdkWindow *window, 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)); + { + if (focus_on_map && private->accept_focus) + SetForegroundWindow (GDK_WINDOW_HWND (window)); + else + SetWindowPos (GDK_WINDOW_HWND (window), HWND_TOP, + 0, 0, 0, 0, + SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE); + } else BringWindowToTop (GDK_WINDOW_HWND (window)); } @@ -1471,7 +1478,16 @@ gdk_window_raise (GdkWindow *window) GDK_NOTE (MISC, g_print ("gdk_window_raise: %p\n", GDK_WINDOW_HWND (window))); - API_CALL (BringWindowToTop, (GDK_WINDOW_HWND (window))); + if (GDK_WINDOW_TYPE (window) == GDK_WINDOW_TEMP) + API_CALL (SetWindowPos, (GDK_WINDOW_HWND (window), HWND_TOPMOST, + 0, 0, 0, 0, + SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE)); + else if (((GdkWindowObject *)window)->accept_focus) + API_CALL (BringWindowToTop, (GDK_WINDOW_HWND (window))); + else + API_CALL (SetWindowPos, (GDK_WINDOW_HWND (window), HWND_TOP, + 0, 0, 0, 0, + SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE)); } }