diff --git a/gui-lib/mred/private/wx/gtk/frame.rkt b/gui-lib/mred/private/wx/gtk/frame.rkt index b5a0bf2b..18750e0c 100644 --- a/gui-lib/mred/private/wx/gtk/frame.rkt +++ b/gui-lib/mred/private/wx/gtk/frame.rkt @@ -237,6 +237,8 @@ (define/override (set-child-size child-gtk x y w h) (gtk_fixed_move panel-gtk child-gtk (->screen x) (->screen y)) + ;; gtk3: we expect a panel in a frame to be always visible, so + ;; this size erquest should work (gtk_widget_set_size_request child-gtk (->screen w) (->screen h))) (define/public (on-close) #t) diff --git a/gui-lib/mred/private/wx/gtk/panel.rkt b/gui-lib/mred/private/wx/gtk/panel.rkt index 8dc97540..7d89fd3e 100644 --- a/gui-lib/mred/private/wx/gtk/panel.rkt +++ b/gui-lib/mred/private/wx/gtk/panel.rkt @@ -28,6 +28,7 @@ (define-gtk gtk_event_box_set_visible_window (_fun _GtkWidget _gboolean -> _void)) (define-gtk gtk_fixed_move (_fun _GtkWidget _GtkWidget _int _int -> _void)) +(define-gtk gtk_widget_get_visible (_fun _GtkWidget -> _gboolean)) (define-gtk gtk_container_set_border_width (_fun _GtkWidget _int -> _void)) @@ -137,7 +138,15 @@ (super-new) (define/override (set-child-size child-gtk x y w h) (gtk_fixed_move (get-container-gtk) child-gtk (->screen x) (->screen y)) - (gtk_widget_set_size_request child-gtk (->screen w) (->screen h))))) + (define re-hide? + (and gtk3? + (not (gtk_widget_get_visible child-gtk)) + (begin + (gtk_widget_show child-gtk) + #t))) + (gtk_widget_set_size_request child-gtk (->screen w) (->screen h)) + (when re-hide? + (gtk_widget_hide child-gtk))))) (define panel% (class (panel-container-mixin (panel-mixin window%)) diff --git a/gui-lib/mred/private/wx/gtk/window.rkt b/gui-lib/mred/private/wx/gtk/window.rkt index 00448f06..c2c858de 100644 --- a/gui-lib/mred/private/wx/gtk/window.rkt +++ b/gui-lib/mred/private/wx/gtk/window.rkt @@ -614,7 +614,7 @@ (set! client-delta-h (->normal (- (GtkRequisition-height req) (GtkRequisition-height creq))))) - (when gtk3? (gtk_widget_show gtk)))) + (when gtk3? (gtk_widget_hide gtk)))) (define/public (set-auto-size [dw 0] [dh 0]) (let ([req (make-GtkRequisition 0 0)]) @@ -633,7 +633,7 @@ (define/public (direct-show on?) ;; atomic mode (if on? - (gtk_widget_show gtk) + (gtk_widget_show gtk) (gtk_widget_hide gtk)) (set! shown? (and on? #t)) (register-child-in-parent on?)