From fce8017005bddb2d73de1dfbbd04832aee6b9f79 Mon Sep 17 00:00:00 2001 From: hobbs Date: Wed, 4 Feb 2004 00:25:13 +0000 Subject: * doc/menubutton.n: * library/menu.tcl (::tk::MbPost): make menubuttons that post above or below reverse direction when not enough space is available. --- ChangeLog | 24 +++++++++++++++--------- doc/menubutton.n | 6 +++--- library/menu.tcl | 13 +++++++++++-- 3 files changed, 29 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 24db4f5..54c883c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-02-03 Jeff Hobbs + + * doc/menubutton.n: + * library/menu.tcl (::tk::MbPost): make menubuttons that post + above or below reverse direction when not enough space is available. + 2004-02-01 David Gravereaux * win/lamp.bmp (deleted): using win/rc/lamp.bmp instead. @@ -18,14 +24,14 @@ 2004-01-27 Daniel Steffen - * generic/tkTextIndex.c: added '#include ' since the - code uses the TclUtfToUniChar macro from that file. [Bug 874745] + * generic/tkTextIndex.c: added '#include ' since the + code uses the TclUtfToUniChar macro from that file. [Bug 874745] - * macosx/Wish.pbproj/project.pbxproj: removed erroneous reference - to mkpsenc.tcl in bundle resources phase (mkpsenc.tcl is already - part of the copy files phase to Resources/Scripts). + * macosx/Wish.pbproj/project.pbxproj: removed erroneous reference + to mkpsenc.tcl in bundle resources phase (mkpsenc.tcl is already + part of the copy files phase to Resources/Scripts). - * macosx/Makefile: added support for 'xcodebuild' on Mac OS X 10.3. + * macosx/Makefile: added support for 'xcodebuild' on Mac OS X 10.3. 2004-01-25 Benjamin Riefenstahl @@ -174,9 +180,9 @@ 2003-12-31 Daniel Steffen - * macosx/Wish.pbproj/project.pbxproj: added missing private headers - to installed Tk.framework, so that tkInt.h can be included - sucessfully from Tk.framework/PrivateHeaders. + * macosx/Wish.pbproj/project.pbxproj: added missing private headers + to installed Tk.framework, so that tkInt.h can be included + sucessfully from Tk.framework/PrivateHeaders. * generic/tkPort.h: corrected include of tkMacOSXPort.h 2003-12-28 Mo DeJong diff --git a/doc/menubutton.n b/doc/menubutton.n index 64cb5d7..8ae4fcf 100644 --- a/doc/menubutton.n +++ b/doc/menubutton.n @@ -5,7 +5,7 @@ '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" -'\" RCS: @(#) $Id: menubutton.n,v 1.4 2001/05/21 14:07:32 tmh Exp $ +'\" RCS: @(#) $Id: menubutton.n,v 1.5 2004/02/04 00:25:13 hobbs Exp $ '\" .so man.macros .TH menubutton n 4.0 Tk "Tk Built-In Commands" @@ -34,14 +34,14 @@ Valid values for this option are \fBbottom\fR, \fBcenter\fR, is \fBnone\fR, meaning that the menubutton will display either an image or text, depending on the values of the \fB\-image\fR and \fB\-bitmap\fR options. -.VS .OP \-direction direction Height Specifies where the menu is going to be popup up. \fBabove\fR tries to pop the menu above the menubutton. \fBbelow\fR tries to pop the menu below the menubutton. \fBleft\fR tries to pop the menu to the left of the menubutton. \fBright\fR tries to pop the menu to the right of the menu button. \fBflush\fR pops the menu directly over the menubutton. -.VE +In the case of \fBabove\fR or \fBbelow\fR, the direction will be +reversed if the menu would show offscreen. .OP \-height height Height Specifies a desired height for the menubutton. If an image or bitmap is being displayed in the menubutton then the value is in diff --git a/library/menu.tcl b/library/menu.tcl index c291ce3..41c51fd 100644 --- a/library/menu.tcl +++ b/library/menu.tcl @@ -4,7 +4,7 @@ # It also implements keyboard traversal of menus and implements a few # other utility procedures related to menus. # -# RCS: @(#) $Id: menu.tcl,v 1.19 2003/06/26 17:15:48 vincentdarley Exp $ +# RCS: @(#) $Id: menu.tcl,v 1.20 2004/02/04 00:25:13 hobbs Exp $ # # Copyright (c) 1992-1994 The Regents of the University of California. # Copyright (c) 1994-1997 Sun Microsystems, Inc. @@ -280,11 +280,20 @@ proc ::tk::MbPost {w {x {}} {y {}}} { above { set x [winfo rootx $w] set y [expr {[winfo rooty $w] - [winfo reqheight $menu]}] + # if we go offscreen to the top, show as 'below' + if {$y < 0} { + set y [expr {[winfo rooty $w] + [winfo height $w]}] + } PostOverPoint $menu $x $y } below { set x [winfo rootx $w] set y [expr {[winfo rooty $w] + [winfo height $w]}] + # if we go offscreen to the bottom, show as 'above' + set mh [winfo reqheight $menu] + if {($y + $mh) > [winfo screenheight $w]} { + set y [expr {[winfo rooty $w] - $mh}] + } PostOverPoint $menu $x $y } left { @@ -336,7 +345,7 @@ proc ::tk::MbPost {w {x {}} {y {}}} { PostOverPoint $menu $x $y [MenuFindName $menu [$w cget -text]] } else { PostOverPoint $menu [winfo rootx $w] [expr {[winfo rooty $w]+[winfo height $w]}] - } + } } } } msg]} { -- cgit v0.12