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/24 02:09:03 UTC

svn commit: r787874 - in /incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk: Sheet.java Window.java skin/terra/TerraSheetSkin.java

Author: gbrown
Date: Wed Jun 24 00:09:03 2009
New Revision: 787874

URL: http://svn.apache.org/viewvc?rev=787874&view=rev
Log:
Fix bug in restoreFocus(); move logic for blocking owner window from TerraSheetSkin to Sheet.

Modified:
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Sheet.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Window.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraSheetSkin.java

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Sheet.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Sheet.java?rev=787874&r1=787873&r2=787874&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Sheet.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Sheet.java Wed Jun 24 00:09:03 2009
@@ -54,6 +54,25 @@
     private boolean result = false;
     private SheetCloseListener sheetCloseListener = null;
 
+    private ComponentMouseButtonListener ownerMouseButtonListener =
+        new ComponentMouseButtonListener.Adapter() {
+        public boolean mouseDown(Component component, Mouse.Button button, int x, int y) {
+            Window owner = (Window)component;
+            Component ownerContent = owner.getContent();
+
+            if (ownerContent != null
+                && !ownerContent.isEnabled()
+                && owner.getComponentAt(x, y) == ownerContent) {
+                ApplicationContext.beep();
+
+                moveToFront();
+                restoreFocus();
+            }
+
+            return false;
+        }
+    };
+
     private SheetStateListenerList sheetStateListeners = new SheetStateListenerList();
 
     /**
@@ -101,6 +120,8 @@
             }
 
             content.setEnabled(false);
+
+            owner.getComponentMouseButtonListeners().add(ownerMouseButtonListener);
         }
     }
 
@@ -132,6 +153,8 @@
                     this.result = result;
 
                     Window owner = getOwner();
+                    owner.getComponentMouseButtonListeners().remove(ownerMouseButtonListener);
+
                     Component content = owner.getContent();
                     content.setEnabled(true);
 

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Window.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Window.java?rev=787874&r1=787873&r2=787874&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Window.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Window.java Wed Jun 24 00:09:03 2009
@@ -735,16 +735,18 @@
      * have a focus descendant, the focus is cleared.
      */
     protected void restoreFocus() {
-        // If this window is still an ancestor of the focus descendant
-        // and the focus descendant can be focused, restore focus to it;
-        // otherwise, clear the focus descendant
-        if (focusDescendant != null
-            && isAncestor(focusDescendant)
-            && !focusDescendant.isBlocked()
-            && focusDescendant.isShowing()) {
-            focusDescendant.requestFocus(true);
-        } else {
-            focusDescendant = null;
+        assert(isShowing()
+            && !isBlocked());
+
+        if (focusDescendant != null) {
+            if (isAncestor(focusDescendant)) {
+                focusDescendant.requestFocus(true);
+            } else {
+                focusDescendant = null;
+            }
+        }
+
+        if (focusDescendant == null) {
             Component.clearFocus(true);
         }
     }
@@ -813,7 +815,7 @@
                     && !window.isBlocked()
                     && !window.isAuxilliary()) {
                     setActiveWindow(window);
-                    restoreFocus();
+                    window.restoreFocus();
                 }
 
                 // This was the last owned window for the current window; move

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraSheetSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraSheetSkin.java?rev=787874&r1=787873&r2=787874&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraSheetSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraSheetSkin.java Wed Jun 24 00:09:03 2009
@@ -21,15 +21,12 @@
 
 import org.apache.pivot.collections.Dictionary;
 import org.apache.pivot.util.Vote;
-import org.apache.pivot.wtk.ApplicationContext;
 import org.apache.pivot.wtk.Component;
 import org.apache.pivot.wtk.ComponentListener;
-import org.apache.pivot.wtk.ComponentMouseButtonListener;
 import org.apache.pivot.wtk.Dimensions;
 import org.apache.pivot.wtk.GraphicsUtilities;
 import org.apache.pivot.wtk.Insets;
 import org.apache.pivot.wtk.Keyboard;
-import org.apache.pivot.wtk.Mouse;
 import org.apache.pivot.wtk.Orientation;
 import org.apache.pivot.wtk.Point;
 import org.apache.pivot.wtk.Sheet;
@@ -92,22 +89,6 @@
         }
     };
 
-    private ComponentMouseButtonListener ownerMouseButtonListener =
-        new ComponentMouseButtonListener.Adapter() {
-        public boolean mouseDown(Component component, Mouse.Button button, int x, int y) {
-            Window owner = (Window)component;
-            Component ownerContent = owner.getContent();
-
-            if (ownerContent != null
-                && !ownerContent.isEnabled()
-                && owner.getComponentAt(x, y) == ownerContent) {
-                ApplicationContext.beep();
-            }
-
-            return false;
-        }
-    };
-
     private DropShadowDecorator dropShadowDecorator = null;
 
     private static final int TRANSITION_DURATION = 250;
@@ -378,7 +359,6 @@
 
         Window owner = window.getOwner();
         owner.getComponentListeners().add(ownerComponentListener);
-        owner.getComponentMouseButtonListeners().add(ownerMouseButtonListener);
 
         windowStateTransition = new WindowStateTransition(false);
         windowStateTransition.start(new TransitionListener() {
@@ -434,7 +414,6 @@
     public void sheetClosed(Sheet sheet) {
         Window owner = sheet.getOwner();
         owner.getComponentListeners().remove(ownerComponentListener);
-        owner.getComponentMouseButtonListeners().remove(ownerMouseButtonListener);
     }
 
     public void alignToOwnerContent() {