From c5c852b88e71635224739e6e4cf5e5ce227a66c3 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 2 Jun 2006 15:10:47 +0000 Subject: [PATCH] center dialogs that have no location svn: r3183 --- collects/mred/private/mrtop.ss | 4 ++-- collects/mred/private/wxtop.ss | 26 ++++++++++++++------------ doc/release-notes/mred/HISTORY | 3 +++ src/wxwindow/src/base/wb_dialg.cxx | 2 +- 4 files changed, 20 insertions(+), 15 deletions(-) diff --git a/collects/mred/private/mrtop.ss b/collects/mred/private/mrtop.ss index 8a8d420579..0ed6370ec8 100644 --- a/collects/mred/private/mrtop.ss +++ b/collects/mred/private/mrtop.ss @@ -208,7 +208,7 @@ (class100*/kw basic-top-level-window% () [(label [parent #f] [width #f] [height #f] [x #f] [y #f] [style null]) top-level-window%-keywords] - (inherit on-traverse-char on-system-menu-char) + (inherit on-traverse-char on-system-menu-char center) (sequence (let ([cwho '(constructor dialog)]) (check-label-string cwho label) @@ -228,7 +228,7 @@ (super-init (lambda (finish) (set! wx (finish (make-object wx-dialog% this this (and parent (mred->wx parent)) label #t - (or x -1) (or y -1) (or width 0) (or height 0) + (or x -11111) (or y -11111) (or width 0) (or height 0) style) #f)) wx) diff --git a/collects/mred/private/wxtop.ss b/collects/mred/private/wxtop.ss index dc802f7711..99f9309690 100644 --- a/collects/mred/private/wxtop.ss +++ b/collects/mred/private/wxtop.ss @@ -337,18 +337,20 @@ (force-redraw)) (when (and on? use-default-position?) (set! use-default-position? #f) - (let*-values ([(w) (get-width)] - [(h) (get-height)] - [(sw sh) (get-display-size)] - [(x x-reset?) (if (< (+ top-x w) sw) - (values top-x #f) - (values (max 0 (- sw w 10)) #t))] - [(y y-reset?) (if (< (+ top-y h) sh) - (values top-y #f) - (values (max 0 (- sh h 20)) #t))]) - (move x y) - (set! top-x (if x-reset? init-top-x (+ top-x 10))) - (set! top-y (if y-reset? init-top-y (+ top-y 20))))) + (if dlg? + (center 'both) + (let*-values ([(w) (get-width)] + [(h) (get-height)] + [(sw sh) (get-display-size)] + [(x x-reset?) (if (< (+ top-x w) sw) + (values top-x #f) + (values (max 0 (- sw w 10)) #t))] + [(y y-reset?) (if (< (+ top-y h) sh) + (values top-y #f) + (values (max 0 (- sh h 20)) #t))]) + (move x y) + (set! top-x (if x-reset? init-top-x (+ top-x 10))) + (set! top-y (if y-reset? init-top-y (+ top-y 20)))))) (if on? (hash-table-put! top-level-windows this #t) (hash-table-remove! top-level-windows this)) diff --git a/doc/release-notes/mred/HISTORY b/doc/release-notes/mred/HISTORY index 481c1bf31f..44706795f5 100644 --- a/doc/release-notes/mred/HISTORY +++ b/doc/release-notes/mred/HISTORY @@ -1,3 +1,6 @@ +Version 301.16 +When no location is given for a dialog%, it is centered when + shown Version 301.8 Added 'no-sheet dialog% style diff --git a/src/wxwindow/src/base/wb_dialg.cxx b/src/wxwindow/src/base/wb_dialg.cxx index 51dba5d8f8..e7ba247c16 100644 --- a/src/wxwindow/src/base/wb_dialg.cxx +++ b/src/wxwindow/src/base/wb_dialg.cxx @@ -61,7 +61,7 @@ void wxbDialogBox::Centre(int direction) int width, height, x, y; wxFrame *frame; - if (direction & wxCENTER_FRAME) { + if (1 /* direction & wxCENTER_FRAME */) { frame = (wxFrame*)GetParent(); if (frame) { frame->GetPosition(&x_offset, &y_offset);