From b06ee4685495f399d3485f456f1c4568316df4ed Mon Sep 17 00:00:00 2001
From: Matthew Flatt <mflatt@debian.local>
Date: Fri, 21 Aug 2015 16:19:47 -0600
Subject: [PATCH] GTK+ 3: fix client->global in a frame with a menu bar

It seems that the right answer was produced in GTK+ 2 due to a
client-location callback, but change the code to use the intended
approach of tracking the menu height.
---
 gui-lib/mred/private/wx/gtk/frame.rkt  | 4 ++--
 gui-lib/mred/private/wx/gtk/window.rkt | 2 ++
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/gui-lib/mred/private/wx/gtk/frame.rkt b/gui-lib/mred/private/wx/gtk/frame.rkt
index 2ccd2f94..28f0afd2 100644
--- a/gui-lib/mred/private/wx/gtk/frame.rkt
+++ b/gui-lib/mred/private/wx/gtk/frame.rkt
@@ -163,7 +163,7 @@
 
     (inherit get-gtk set-size
              pre-on-char pre-on-event
-             get-client-delta get-size
+             get-stored-client-delta get-size
              get-parent get-eventspace
              adjust-client-delta
              queue-on-size)
@@ -463,7 +463,7 @@
     (define/override (internal-client-to-screen x y)
       (gtk_window_set_gravity gtk GDK_GRAVITY_STATIC)
       (let-values ([(dx dy) (gtk_window_get_position gtk)]
-                   [(cdx cdy) (get-client-delta)])
+                   [(cdx cdy) (get-stored-client-delta)])
         (gtk_window_set_gravity gtk GDK_GRAVITY_NORTH_WEST)
         (set-box! x (+ (unbox x) (->normal (+ dx cdx))))
         (set-box! y (+ (unbox y) (->normal (+ dy cdy))))))
diff --git a/gui-lib/mred/private/wx/gtk/window.rkt b/gui-lib/mred/private/wx/gtk/window.rkt
index 9ae6f6c0..ce3442c9 100644
--- a/gui-lib/mred/private/wx/gtk/window.rkt
+++ b/gui-lib/mred/private/wx/gtk/window.rkt
@@ -834,6 +834,8 @@
 
     (define/public (get-client-delta)
       (values 0 0))
+    (define/public (get-stored-client-delta)
+      (values client-delta-w client-delta-h))
 
     (define/public (warp-pointer x y)
       (define xb (box x))