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 2009/06/23 20:27:44 UTC

svn commit: r787778 - in /incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk: MenuPopup.java skin/CalendarButtonSkin.java skin/ListButtonSkin.java skin/MenuButtonSkin.java skin/terra/TerraMenuButtonSkin.java

Author: gbrown
Date: Tue Jun 23 18:27:44 2009
New Revision: 787778

URL: http://svn.apache.org/viewvc?rev=787778&view=rev
Log:
Various minor focus-related fixes and updates; allow toolbar menu buttons to gain focus (like toolbar push buttons).

Modified:
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuPopup.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/CalendarButtonSkin.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ListButtonSkin.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuButtonSkin.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraMenuButtonSkin.java

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuPopup.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuPopup.java?rev=787778&r1=787777&r2=787778&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuPopup.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuPopup.java Tue Jun 23 18:27:44 2009
@@ -134,6 +134,7 @@
         super.close();
 
         if (isClosed()) {
+            setFocusDescendant(null);
             affiliate = null;
         }
     }

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/CalendarButtonSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/CalendarButtonSkin.java?rev=787778&r1=787777&r2=787778&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/CalendarButtonSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/CalendarButtonSkin.java Tue Jun 23 18:27:44 2009
@@ -83,9 +83,7 @@
             switch (keyCode) {
                 case Keyboard.KeyCode.ESCAPE: {
                     calendarPopup.close();
-                    if (calendarButton.isShowing()) {
-                        calendarButton.requestFocus();
-                    }
+                    calendarButton.requestFocus();
                     break;
                 }
 
@@ -102,7 +100,7 @@
                         Direction direction = (Keyboard.isPressed(Keyboard.Modifier.SHIFT)) ?
                             Direction.BACKWARD : Direction.FORWARD;
                         calendarButton.transferFocus(direction);
-                    } else if (calendarButton.isShowing()) {
+                    } else {
                         calendarButton.requestFocus();
                     }
 
@@ -274,10 +272,6 @@
         calendarButton.requestFocus();
         calendarButton.press();
 
-        if (calendar.isShowing()) {
-            calendar.requestFocus();
-        }
-
         return consumed;
     }
 

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ListButtonSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ListButtonSkin.java?rev=787778&r1=787777&r2=787778&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ListButtonSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ListButtonSkin.java Tue Jun 23 18:27:44 2009
@@ -82,9 +82,7 @@
             switch (keyCode) {
                 case Keyboard.KeyCode.ESCAPE: {
                     listViewPopup.close();
-                    if (listButton.isShowing()) {
-                        listButton.requestFocus();
-                    }
+                    listButton.requestFocus();
                     break;
                 }
 
@@ -102,7 +100,7 @@
                         Direction direction = (Keyboard.isPressed(Keyboard.Modifier.SHIFT)) ?
                             Direction.BACKWARD : Direction.FORWARD;
                         listButton.transferFocus(direction);
-                    } else if (listButton.isShowing()) {
+                    } else {
                         listButton.requestFocus();
                     }
 
@@ -277,10 +275,6 @@
         listButton.requestFocus();
         listButton.press();
 
-        if (listView.isShowing()) {
-            listView.requestFocus();
-        }
-
         return consumed;
     }
 

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuButtonSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuButtonSkin.java?rev=787778&r1=787777&r2=787778&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuButtonSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuButtonSkin.java Tue Jun 23 18:27:44 2009
@@ -28,7 +28,6 @@
 import org.apache.pivot.wtk.Mouse;
 import org.apache.pivot.wtk.Point;
 import org.apache.pivot.wtk.Window;
-import org.apache.pivot.wtk.WindowStateListener;
 
 /**
  * Abstract base class for menu button skins.
@@ -40,19 +39,6 @@
     protected boolean pressed = false;
     protected MenuPopup menuPopup = new MenuPopup();
 
-    private WindowStateListener menuPopupWindowStateListener = new WindowStateListener.Adapter() {
-        public void windowClosed(Window window, Display display) {
-            MenuButton menuButton = (MenuButton)getComponent();
-            menuButton.requestFocus();
-
-            repaintComponent();
-        }
-    };
-
-    public MenuButtonSkin() {
-        menuPopup.getWindowStateListeners().add(menuPopupWindowStateListener);
-    }
-
     @Override
     public void install(Component component) {
         super.install(component);
@@ -130,17 +116,8 @@
     @Override
     public boolean mouseClick(Component component, Mouse.Button button, int x, int y, int count) {
         MenuButton menuButton = (MenuButton)getComponent();
-
-        if (menuButton.isFocusable()) {
-            menuButton.requestFocus();
-        }
-
         menuButton.press();
 
-        if (menuPopup.isShowing()) {
-            menuPopup.requestFocus();
-        }
-
         return true;
     }
 
@@ -178,6 +155,7 @@
     }
 
     // Button events
+    @Override
     public void buttonPressed(Button button) {
         if (menuPopup.isOpen()) {
             menuPopup.close();

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraMenuButtonSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraMenuButtonSkin.java?rev=787778&r1=787777&r2=787778&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraMenuButtonSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraMenuButtonSkin.java Tue Jun 23 18:27:44 2009
@@ -30,10 +30,14 @@
 import org.apache.pivot.wtk.Button;
 import org.apache.pivot.wtk.Component;
 import org.apache.pivot.wtk.Dimensions;
+import org.apache.pivot.wtk.Display;
 import org.apache.pivot.wtk.GraphicsUtilities;
 import org.apache.pivot.wtk.Insets;
 import org.apache.pivot.wtk.MenuButton;
+import org.apache.pivot.wtk.Mouse;
 import org.apache.pivot.wtk.Theme;
+import org.apache.pivot.wtk.Window;
+import org.apache.pivot.wtk.WindowStateListener;
 import org.apache.pivot.wtk.skin.MenuButtonSkin;
 
 
@@ -59,6 +63,17 @@
     private Color pressedBevelColor;
     private Color disabledBevelColor;
 
+    private WindowStateListener menuPopupWindowStateListener = new WindowStateListener.Adapter() {
+        public void windowClosed(Window window, Display display) {
+            if (toolbar) {
+                repaintComponent();
+            } else {
+                MenuButton menuButton = (MenuButton)getComponent();
+                menuButton.requestFocus();
+            }
+        }
+    };
+
     private static final int TRIGGER_WIDTH = 10;
 
     public TerraMenuButtonSkin() {
@@ -79,6 +94,8 @@
         bevelColor = TerraTheme.brighten(backgroundColor);
         pressedBevelColor = TerraTheme.darken(backgroundColor);
         disabledBevelColor = disabledBackgroundColor;
+
+        menuPopup.getWindowStateListeners().add(menuPopupWindowStateListener);
     }
 
     public int getPreferredWidth(int height) {
@@ -130,6 +147,7 @@
 
         if (!toolbar
             || highlighted
+            || menuButton.isFocused()
             || menuPopup.isOpen()) {
             if (menuButton.isEnabled()) {
                 backgroundColor = this.backgroundColor;
@@ -195,7 +213,8 @@
         triggerGraphics.dispose();
 
         // Paint the focus state
-        if (menuButton.isFocused()) {
+        if (menuButton.isFocused()
+            && !toolbar) {
             BasicStroke dashStroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND,
                 BasicStroke.JOIN_ROUND, 1.0f, new float[] {0.0f, 2.0f}, 0.0f);
 
@@ -212,7 +231,8 @@
 
     @Override
     public boolean isFocusable() {
-        return !toolbar;
+        return !toolbar
+            || menuPopup.isClosed();
     }
 
     public Font getFont() {
@@ -430,4 +450,23 @@
 
         repaintComponent();
     }
+
+    @Override
+    public void mouseOut(Component component) {
+        super.mouseOut(component);
+
+        if (toolbar
+            && component.isFocused()) {
+            Component.clearFocus();
+        }
+    }
+
+    @Override
+    public boolean mouseClick(Component component, Mouse.Button button, int x, int y, int count) {
+        if (!toolbar) {
+            component.requestFocus();
+        }
+
+        return super.mouseClick(component, button, x, y, count);
+    }
 }