[gimp] Bug 780979 - Fullscreen windows with WS_EX_NOACTIVATE | WS_EX_TRANSPARENT ...
- From: N/A <ell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] Bug 780979 - Fullscreen windows with WS_EX_NOACTIVATE | WS_EX_TRANSPARENT ...
- Date: Sun, 29 Oct 2017 19:16:04 +0000 (UTC)
commit fb5354c9e55a789f0b908d7361fdc41c70e08d57
Author: Ell <ell_se yahoo com>
Date: Sun Oct 29 15:08:07 2017 -0400
Bug 780979 - Fullscreen windows with WS_EX_NOACTIVATE | WS_EX_TRANSPARENT ...
... interfere with GIMP UI events
Add a GTK+ patch to ignore top-level transparent windows when
looking for the top-level GDK window at a certain pointer location,
in the Win32 GDK backend.
build/windows/patches/gtk+-2.24-bug780979.patch | 32 +++++++++++++++++++++++
1 files changed, 32 insertions(+), 0 deletions(-)
---
diff --git a/build/windows/patches/gtk+-2.24-bug780979.patch b/build/windows/patches/gtk+-2.24-bug780979.patch
new file mode 100644
index 0000000..40c726e
--- /dev/null
+++ b/build/windows/patches/gtk+-2.24-bug780979.patch
@@ -0,0 +1,32 @@
+--- a/gdk/win32/gdkwindow-win32.c
++++ b/gdk/win32/gdkwindow-win32.c
+@@ -2767,6 +2767,10 @@ _gdk_windowing_window_at_pointer (GdkDisplay *display,
+ * WindowFromPoint() can find our windows, we follow similar logic
+ * here, and ignore invisible and disabled windows.
+ */
++ UINT cwp_flags = CWP_SKIPDISABLED |
++ CWP_SKIPINVISIBLE |
++ CWP_SKIPTRANSPARENT;
++
+ hwnd = GetDesktopWindow ();
+ do {
+ window = gdk_win32_handle_table_lookup ((GdkNativeWindow) hwnd);
+@@ -2777,8 +2781,7 @@ _gdk_windowing_window_at_pointer (GdkDisplay *display,
+ break;
+
+ screen_to_client (hwnd, screen_pt, &client_pt);
+- hwndc = ChildWindowFromPointEx (hwnd, client_pt, CWP_SKIPDISABLED |
+- CWP_SKIPINVISIBLE);
++ hwndc = ChildWindowFromPointEx (hwnd, client_pt, cwp_flags);
+
+ /* Verify that we're really inside the client area of the window */
+ if (hwndc != hwnd)
+@@ -2789,6 +2792,8 @@ _gdk_windowing_window_at_pointer (GdkDisplay *display,
+ hwndc = hwnd;
+ }
+
++ /* Only ignore top-level transparent windows */
++ cwp_flags &= ~CWP_SKIPTRANSPARENT;
+ } while (hwndc != hwnd && (hwnd = hwndc, 1));
+
+ }
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]