By properly using the nifty PopUpUtil, we can simplify and correct this code all at once.
git-svn-id: svn+ssh://src.earth.threerings.net/nenya/trunk@520 ed5b42cb-e716-0410-a449-f6a68f950b19
This commit is contained in:
@@ -185,7 +185,7 @@ public class CommandMenu extends Menu
|
|||||||
y = y - getExplicitOrMeasuredHeight();
|
y = y - getExplicitOrMeasuredHeight();
|
||||||
}
|
}
|
||||||
|
|
||||||
PopUpUtil.fit(this);
|
PopUpUtil.fitInRect(this, _fitting || screen);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -253,36 +253,16 @@ public class CommandMenu extends Menu
|
|||||||
|
|
||||||
// if we're lefting, upping or fitting make sure our submenu does so as well
|
// if we're lefting, upping or fitting make sure our submenu does so as well
|
||||||
var submenu :Menu = IMenuItemRenderer(row).menu;
|
var submenu :Menu = IMenuItemRenderer(row).menu;
|
||||||
var lefting :Boolean = _lefting;
|
if (_lefting) {
|
||||||
var upping :Boolean = _upping;
|
|
||||||
var fitting :Rectangle = _fitting != null ? _fitting :
|
|
||||||
new Rectangle(0, 0, stage.stageWidth, stage.stageHeight);
|
|
||||||
if (submenu.x + submenu.getExplicitOrMeasuredWidth() > fitting.right) {
|
|
||||||
lefting = true;
|
|
||||||
}
|
|
||||||
if (submenu.y + submenu.getExplicitOrMeasuredHeight() > fitting.bottom) {
|
|
||||||
upping = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (lefting) {
|
|
||||||
submenu.x -= submenu.getExplicitOrMeasuredWidth();
|
submenu.x -= submenu.getExplicitOrMeasuredWidth();
|
||||||
}
|
}
|
||||||
if (upping) {
|
if (_upping) {
|
||||||
var displayObj :DisplayObject = DisplayObject(row);
|
var displayObj :DisplayObject = DisplayObject(row);
|
||||||
var rowLoc :Point = displayObj.localToGlobal(new Point(row.x, row.y));
|
var rowLoc :Point = displayObj.localToGlobal(new Point(row.x, row.y));
|
||||||
submenu.y = rowLoc.y - submenu.getExplicitOrMeasuredHeight() + displayObj.height;
|
submenu.y = rowLoc.y - submenu.getExplicitOrMeasuredHeight() + displayObj.height;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if we've poped out of the boundaries, just snap it to the lower right corner, or upper
|
PopUpUtil.fitInRect(submenu, _fitting || screen);
|
||||||
// if upping, left if lefting
|
|
||||||
if (submenu.x < fitting.left) {
|
|
||||||
submenu.x = lefting ? fitting.left : Math.max(
|
|
||||||
fitting.right - submenu.getExplicitOrMeasuredWidth(), fitting.left);
|
|
||||||
}
|
|
||||||
if (submenu.y < fitting.top) {
|
|
||||||
submenu.y = upping ? fitting.top : Math.max(
|
|
||||||
fitting.bottom - submenu.getExplicitOrMeasuredHeight(), fitting.top);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// from List
|
// from List
|
||||||
|
|||||||
Reference in New Issue
Block a user