summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Ehresman <jpe@wingware.com>2006-02-09 03:20:56 +0000
committerTor Lillqvist <tml@src.gnome.org>2006-02-09 03:20:56 +0000
commite847ace84b042d27bd54cc79243f70a0f167e909 (patch)
tree6cc95d725a373f345309730319ddaae9b21f1b52
parentc502c9aeabc830a2021bce60e0dc4cdfde9a97a1 (diff)
downloadgtk+-e847ace84b042d27bd54cc79243f70a0f167e909.tar.gz
gdk/win32/gdkevents-win32.c (gdk_event_translate) <WM_MOUSEACTIVATE> Call
2006-02-08 John Ehresman <jpe@wingware.com> * gdk/win32/gdkevents-win32.c (gdk_event_translate) <WM_MOUSEACTIVATE> * 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)
-rw-r--r--ChangeLog9
-rw-r--r--ChangeLog.pre-2-109
-rw-r--r--gdk/win32/gdkevents-win32.c3
-rw-r--r--gdk/win32/gdkwindow-win32.c20
4 files changed, 38 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index b0ff70ee44..5ce8f4c50c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
2006-02-08 John Ehresman <jpe@wingware.com>
+ * gdk/win32/gdkevents-win32.c (gdk_event_translate)
+ <WM_MOUSEACTIVATE>
+ * 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 <jpe@wingware.com>
+
* gdk/win32/gdkwindow-win32.c: Let gdk_window_set_decorations()
take precedence over anything derived from hints. Restructure
related code and logic, add some new helper functions. (#327217)
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,5 +1,14 @@
2006-02-08 John Ehresman <jpe@wingware.com>
+ * gdk/win32/gdkevents-win32.c (gdk_event_translate)
+ <WM_MOUSEACTIVATE>
+ * 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 <jpe@wingware.com>
+
* gdk/win32/gdkwindow-win32.c: Let gdk_window_set_decorations()
take precedence over anything derived from hints. Restructure
related code and logic, add some new helper functions. (#327217)
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));
}
}