From e2687511b3aa7bf90ca6c854cfb725721a641361 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Mon, 16 Aug 2010 08:54:34 -0600 Subject: [PATCH] another try at fixing gtk dialog placement original commit: 647ce060ab1abe89eb22d0f974b93d619d2fc612 --- collects/mred/private/wx/gtk/dialog.rkt | 5 +---- collects/mred/private/wx/gtk/frame.rkt | 2 ++ collects/mred/private/wx/gtk/window.rkt | 10 ++++++---- collects/mred/private/wxtop.rkt | 2 +- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/collects/mred/private/wx/gtk/dialog.rkt b/collects/mred/private/wx/gtk/dialog.rkt index 5cf001f8..3de209a7 100644 --- a/collects/mred/private/wx/gtk/dialog.rkt +++ b/collects/mred/private/wx/gtk/dialog.rkt @@ -57,10 +57,7 @@ (super direct-show on?)) (define/override (center dir wrt) - ;; We're supposed to use gtk_window_set_position() for dialogs, - ;; but we must be doing something else wrong so that it doesn't - ;; work. - (if #f ; (eq? dir 'both) + (if (eq? dir 'both) (gtk_window_set_position (get-gtk) (if (get-parent) GTK_WIN_POS_CENTER_ON_PARENT diff --git a/collects/mred/private/wx/gtk/frame.rkt b/collects/mred/private/wx/gtk/frame.rkt index df5eda5e..1be511eb 100644 --- a/collects/mred/private/wx/gtk/frame.rkt +++ b/collects/mred/private/wx/gtk/frame.rkt @@ -180,6 +180,8 @@ (define/override (get-dialog-level) 0) (define/public (frame-relative-dialog-status win) #f) + (define/override (get-unset-pos) -11111) + (define/override (center dir wrt) (let ([w-box (box 0)] [h-box (box 0)] diff --git a/collects/mred/private/wx/gtk/window.rkt b/collects/mred/private/wx/gtk/window.rkt index 34ab5f9f..c4fda419 100644 --- a/collects/mred/private/wx/gtk/window.rkt +++ b/collects/mred/private/wx/gtk/window.rkt @@ -287,11 +287,13 @@ [extra-gtks extra-gtks] [parent parent]) - (define save-x 0) - (define save-y 0) + (define save-x (get-unset-pos)) + (define save-y (get-unset-pos)) (define save-w 0) (define save-h 0) + (define/public (get-unset-pos) 0) + (connect-size-allocate gtk) (when add-to-parent? @@ -399,8 +401,8 @@ (unless no-show? (show #t)) - (define/public (get-x) save-x) - (define/public (get-y) save-y) + (define/public (get-x) (if (= save-x -11111) 0 save-x)) + (define/public (get-y) (if (= save-y -11111) 0 save-y)) (define/public (get-width) save-w) (define/public (get-height) save-h) diff --git a/collects/mred/private/wxtop.rkt b/collects/mred/private/wxtop.rkt index 6a86a835..781a3278 100644 --- a/collects/mred/private/wxtop.rkt +++ b/collects/mred/private/wxtop.rkt @@ -345,7 +345,7 @@ (set! last-height correct-h) (set! already-trying? #t) (enforce-size -1 -1 -1 -1 1 1) - (set-size -1 -1 correct-w correct-h) + (set-size -11111 -11111 correct-w correct-h) (enforce-size min-w min-h (if sx? -1 min-w) (if sy? -1 min-h) 1 1)