diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2012-04-21 08:06:59 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2012-04-21 08:06:59 (GMT) |
commit | 3bece6a1f6e63238d6ec8072b121efa5f720ba60 (patch) | |
tree | 90a40fd039da5472d189be8b8b34c440f4de0dff /generic/tkMenuDraw.c | |
parent | 75573ed5106bfdc3d3663af8a5547fc9d140aca2 (diff) | |
parent | 72aefd145db12da556c500fa007526ebef3f856a (diff) | |
download | tk-3bece6a1f6e63238d6ec8072b121efa5f720ba60.zip tk-3bece6a1f6e63238d6ec8072b121efa5f720ba60.tar.gz tk-3bece6a1f6e63238d6ec8072b121efa5f720ba60.tar.bz2 |
same bugfix, but now applied to trunk
Diffstat (limited to 'generic/tkMenuDraw.c')
-rw-r--r-- | generic/tkMenuDraw.c | 28 |
1 files changed, 9 insertions, 19 deletions
diff --git a/generic/tkMenuDraw.c b/generic/tkMenuDraw.c index 119b4bf..4cd9b02 100644 --- a/generic/tkMenuDraw.c +++ b/generic/tkMenuDraw.c @@ -844,7 +844,7 @@ TkPostTearoffMenu( * posting */ { int vRootX, vRootY, vRootWidth, vRootHeight; - int tmp, result; + int result; TkActivateMenuEntry(menuPtr, -1); TkRecomputeMenu(menuPtr); @@ -877,31 +877,21 @@ TkPostTearoffMenu( * 2. The menu may not have been mapped yet, so its current size might be * the default 1x1. To compute how much space it needs, use its * requested size, not its actual size. - * - * Note that this code assumes square screen regions and all positive - * coordinates. This does not work on a Mac with multiple monitors. But - * then again, Tk has other problems with this. */ Tk_GetVRootGeometry(Tk_Parent(menuPtr->tkwin), &vRootX, &vRootY, &vRootWidth, &vRootHeight); - x += vRootX; - y += vRootY; - tmp = WidthOfScreen(Tk_Screen(menuPtr->tkwin)) - - Tk_ReqWidth(menuPtr->tkwin); - if (x > tmp) { - x = tmp; + if (x > vRootX + vRootWidth) { + x = vRootX + vRootWidth; } - if (x < 0) { - x = 0; + if (x < vRootX) { + x = vRootX; } - tmp = HeightOfScreen(Tk_Screen(menuPtr->tkwin)) - - Tk_ReqHeight(menuPtr->tkwin); - if (y > tmp) { - y = tmp; + if (y > vRootY + vRootHeight) { + y = vRootY + vRootHeight; } - if (y < 0) { - y = 0; + if (y < vRootY) { + y = vRootY; } Tk_MoveToplevelWindow(menuPtr->tkwin, x, y); if (!Tk_IsMapped(menuPtr->tkwin)) { |