You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by gb...@apache.org on 2010/10/01 21:25:31 UTC
svn commit: r1003625 - in
/pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra:
TerraCalendarButtonSkin.java TerraColorChooserButtonSkin.java
TerraListButtonSkin.java TerraMenuButtonSkin.java
Author: gbrown
Date: Fri Oct 1 19:25:30 2010
New Revision: 1003625
URL: http://svn.apache.org/viewvc?rev=1003625&view=rev
Log:
Ensure that button popups stay within display bounds.
Modified:
pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraCalendarButtonSkin.java
pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraColorChooserButtonSkin.java
pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraListButtonSkin.java
pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraMenuButtonSkin.java
Modified: pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraCalendarButtonSkin.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraCalendarButtonSkin.java?rev=1003625&r1=1003624&r2=1003625&view=diff
==============================================================================
--- pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraCalendarButtonSkin.java (original)
+++ pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraCalendarButtonSkin.java Fri Oct 1 19:25:30 2010
@@ -57,15 +57,26 @@ public class TerraCalendarButtonSkin ext
CalendarButton calendarButton = (CalendarButton)getComponent();
// Size and position the popup
- int width = getWidth();
- int height = getHeight();
-
Display display = calendarButton.getDisplay();
+ Dimensions displaySize = display.getSize();
+
Point buttonLocation = calendarButton.mapPointToAncestor(display, 0, 0);
- window.setLocation(buttonLocation.x, buttonLocation.y + height - 1);
+ window.setLocation(buttonLocation.x, buttonLocation.y + getHeight() - 1);
+
+ int width = getWidth();
+ window.setMinimumWidth(width - TRIGGER_WIDTH - 1);
+
+ int popupWidth = window.getPreferredWidth();
+ if (buttonLocation.x + popupWidth > displaySize.width) {
+ window.setX(buttonLocation.x + width - popupWidth);
+ }
- window.setMinimumWidth(width - TRIGGER_WIDTH - 1);
- window.setMaximumHeight(display.getHeight() - window.getY());
+ int popupHeight = window.getPreferredHeight();
+ int maximumHeight = displaySize.height - window.getY();
+ if (popupHeight > maximumHeight
+ && buttonLocation.y > maximumHeight) {
+ window.setY(buttonLocation.y - window.getPreferredHeight() + 1);
+ }
repaintComponent();
}
Modified: pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraColorChooserButtonSkin.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraColorChooserButtonSkin.java?rev=1003625&r1=1003624&r2=1003625&view=diff
==============================================================================
--- pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraColorChooserButtonSkin.java (original)
+++ pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraColorChooserButtonSkin.java Fri Oct 1 19:25:30 2010
@@ -55,15 +55,26 @@ public class TerraColorChooserButtonSkin
colorChooser.setSelectedColor(colorChooserButton.getSelectedColor());
// Size and position the popup
- int width = getWidth();
- int height = getHeight();
-
Display display = colorChooserButton.getDisplay();
+ Dimensions displaySize = display.getSize();
+
Point buttonLocation = colorChooserButton.mapPointToAncestor(display, 0, 0);
- window.setLocation(buttonLocation.x, buttonLocation.y + height - 1);
+ window.setLocation(buttonLocation.x, buttonLocation.y + getHeight() - 1);
+
+ int width = getWidth();
+ window.setMinimumWidth(width - TRIGGER_WIDTH - 1);
+
+ int popupWidth = window.getPreferredWidth();
+ if (buttonLocation.x + popupWidth > displaySize.width) {
+ window.setX(buttonLocation.x + width - popupWidth);
+ }
- window.setMinimumWidth(width - TRIGGER_WIDTH - 1);
- window.setMaximumHeight(display.getHeight() - window.getY());
+ int popupHeight = window.getPreferredHeight();
+ int maximumHeight = displaySize.height - window.getY();
+ if (popupHeight > maximumHeight
+ && buttonLocation.y > maximumHeight) {
+ window.setY(buttonLocation.y - window.getPreferredHeight() + 1);
+ }
repaintComponent();
}
Modified: pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraListButtonSkin.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraListButtonSkin.java?rev=1003625&r1=1003624&r2=1003625&view=diff
==============================================================================
--- pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraListButtonSkin.java (original)
+++ pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraListButtonSkin.java Fri Oct 1 19:25:30 2010
@@ -77,16 +77,31 @@ public class TerraListButtonSkin extends
}
// Size and position the popup
- int width = getWidth();
- int height = getHeight();
-
Display display = listButton.getDisplay();
+ Dimensions displaySize = display.getSize();
+
Point buttonLocation = listButton.mapPointToAncestor(display, 0, 0);
- window.setLocation(buttonLocation.x, buttonLocation.y + height - 1);
+ window.setLocation(buttonLocation.x, buttonLocation.y + getHeight() - 1);
+ int width = getWidth();
window.setMinimumWidth(width - TRIGGER_WIDTH - 1);
- window.setMaximumHeight(display.getHeight() - window.getY());
-
+
+ int popupWidth = window.getPreferredWidth();
+ if (buttonLocation.x + popupWidth > displaySize.width) {
+ window.setX(buttonLocation.x + width - popupWidth);
+ }
+
+ window.setMaximumHeight(Integer.MAX_VALUE);
+ int popupHeight = window.getPreferredHeight();
+ int maximumHeight = displaySize.height - window.getY();
+ if (popupHeight > maximumHeight
+ && buttonLocation.y > maximumHeight) {
+ window.setMaximumHeight(buttonLocation.y);
+ window.setY(buttonLocation.y - window.getPreferredHeight() + 1);
+ } else {
+ window.setMaximumHeight(maximumHeight);
+ }
+
repaintComponent();
ApplicationContext.queueCallback(new Runnable() {
Modified: pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraMenuButtonSkin.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraMenuButtonSkin.java?rev=1003625&r1=1003624&r2=1003625&view=diff
==============================================================================
--- pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraMenuButtonSkin.java (original)
+++ pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraMenuButtonSkin.java Fri Oct 1 19:25:30 2010
@@ -70,16 +70,31 @@ public class TerraMenuButtonSkin extends
MenuButton menuButton = (MenuButton)getComponent();
// Size and position the popup
- int width = getWidth();
- int height = getHeight();
-
Display display = menuButton.getDisplay();
+ Dimensions displaySize = display.getSize();
+
Point buttonLocation = menuButton.mapPointToAncestor(display, 0, 0);
- window.setLocation(buttonLocation.x, buttonLocation.y + height - 1);
+ window.setLocation(buttonLocation.x, buttonLocation.y + getHeight() - 1);
+ int width = getWidth();
window.setMinimumWidth(width - TRIGGER_WIDTH - 1);
- window.setMaximumHeight(display.getHeight() - window.getY());
-
+
+ int popupWidth = window.getPreferredWidth();
+ if (buttonLocation.x + popupWidth > displaySize.width) {
+ window.setX(buttonLocation.x + width - popupWidth);
+ }
+
+ window.setMaximumHeight(Integer.MAX_VALUE);
+ int popupHeight = window.getPreferredHeight();
+ int maximumHeight = displaySize.height - window.getY();
+ if (popupHeight > maximumHeight
+ && buttonLocation.y > maximumHeight) {
+ window.setMaximumHeight(buttonLocation.y);
+ window.setY(buttonLocation.y - window.getPreferredHeight() + 1);
+ } else {
+ window.setMaximumHeight(maximumHeight);
+ }
+
repaintComponent();
}