You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by sm...@apache.org on 2012/05/09 12:40:28 UTC

svn commit: r1336061 - in /pivot/trunk: tests/src/org/apache/pivot/tests/issues/pivot_738.bxml wtk/src/org/apache/pivot/wtk/Viewport.java wtk/src/org/apache/pivot/wtk/skin/ScrollPaneSkin.java

Author: smartini
Date: Wed May  9 10:40:27 2012
New Revision: 1336061

URL: http://svn.apache.org/viewvc?rev=1336061&view=rev
Log:
PIVOT-738, add the repaintAllViewport property as a workaround

Modified:
    pivot/trunk/tests/src/org/apache/pivot/tests/issues/pivot_738.bxml
    pivot/trunk/wtk/src/org/apache/pivot/wtk/Viewport.java
    pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ScrollPaneSkin.java

Modified: pivot/trunk/tests/src/org/apache/pivot/tests/issues/pivot_738.bxml
URL: http://svn.apache.org/viewvc/pivot/trunk/tests/src/org/apache/pivot/tests/issues/pivot_738.bxml?rev=1336061&r1=1336060&r2=1336061&view=diff
==============================================================================
--- pivot/trunk/tests/src/org/apache/pivot/tests/issues/pivot_738.bxml (original)
+++ pivot/trunk/tests/src/org/apache/pivot/tests/issues/pivot_738.bxml Wed May  9 10:40:27 2012
@@ -36,7 +36,7 @@ limitations under the License.
 
     <ScrollPane horizontalScrollBarPolicy="fill_to_capacity" verticalScrollBarPolicy="fill_to_capacity">
         <Border preferredHeight="220">
-            <ScrollPane verticalScrollBarPolicy="always">
+            <ScrollPane verticalScrollBarPolicy="always" repaintAllViewport="true">
                 <TableView bxml:id="listTable">
                     <columns>
                         <TableView.Column name="i" width="80"/>

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/Viewport.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/Viewport.java?rev=1336061&r1=1336060&r2=1336061&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/Viewport.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/Viewport.java Wed May  9 10:40:27 2012
@@ -67,6 +67,7 @@ public abstract class Viewport extends C
     private Component view;
 
     private boolean consumeRepaint = false;
+    private boolean repaintAllViewport = false;
 
     private ViewportListenerList viewportListeners = new ViewportListenerList();
 
@@ -191,4 +192,24 @@ public abstract class Viewport extends C
     public ListenerList<ViewportListener> getViewportListeners() {
         return viewportListeners;
     }
+
+    /**
+     * Tell if the viewport mode is optimized (repaint only needed area, default), or repaint all
+     *
+     * @return true if optimized, otherwise false
+     */
+    public boolean isRepaintAllViewport() {
+        return repaintAllViewport;
+    }
+
+    /**
+     * Set the viewport mode
+     *
+     * @param repaintAllViewport
+     * true means optimized (repaint only needed area, default), while false means repaint all
+     */
+    public void setRepaintAllViewport(boolean repaintAllViewport) {
+        this.repaintAllViewport = repaintAllViewport;
+    }
+
 }

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ScrollPaneSkin.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ScrollPaneSkin.java?rev=1336061&r1=1336060&r2=1336061&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ScrollPaneSkin.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ScrollPaneSkin.java Wed May  9 10:40:27 2012
@@ -27,17 +27,17 @@ import org.apache.pivot.wtk.Component;
 import org.apache.pivot.wtk.DesktopApplicationContext;
 import org.apache.pivot.wtk.Dimensions;
 import org.apache.pivot.wtk.Keyboard;
+import org.apache.pivot.wtk.Keyboard.KeyCode;
 import org.apache.pivot.wtk.Mouse;
 import org.apache.pivot.wtk.Orientation;
 import org.apache.pivot.wtk.ScrollBar;
 import org.apache.pivot.wtk.ScrollBarValueListener;
 import org.apache.pivot.wtk.ScrollPane;
+import org.apache.pivot.wtk.ScrollPane.Corner;
+import org.apache.pivot.wtk.ScrollPane.ScrollBarPolicy;
 import org.apache.pivot.wtk.ScrollPaneListener;
 import org.apache.pivot.wtk.Viewport;
 import org.apache.pivot.wtk.ViewportListener;
-import org.apache.pivot.wtk.Keyboard.KeyCode;
-import org.apache.pivot.wtk.ScrollPane.Corner;
-import org.apache.pivot.wtk.ScrollPane.ScrollBarPolicy;
 
 /**
  * Scroll pane skin.
@@ -901,7 +901,6 @@ public class ScrollPaneSkin extends Cont
             ScrollPane scrollPane = (ScrollPane)getComponent();
             ApplicationContext.DisplayHost displayHost = scrollPane.getDisplay().getDisplayHost();
 
-            // TODO: verify if use non deprecated methods ...
             optimizeScrolling = (displayHost.getScale() == 1
                 && (DesktopApplicationContext.isActive()
                 || (displayHost.getPeer().canDetermineObscurity()
@@ -1023,6 +1022,7 @@ public class ScrollPaneSkin extends Cont
             graphics.copyArea(blitX, blitY, blitWidth, blitHeight, 0, -deltaScrollTop);
 
             scrollPane.setConsumeRepaint(true);
+
             try {
                 view.setLocation(view.getX(), columnHeaderHeight - scrollTop);
 
@@ -1033,8 +1033,16 @@ public class ScrollPaneSkin extends Cont
                 scrollPane.setConsumeRepaint(false);
             }
 
-            scrollPane.repaint(blitX, columnHeaderHeight + (deltaScrollTop > 0 ? blitHeight : 0),
-                blitWidth, Math.abs(deltaScrollTop), true);
+            boolean repaintAllViewport = scrollPane.isRepaintAllViewport();
+            if (!repaintAllViewport) {
+                scrollPane.repaint(blitX, (columnHeaderHeight + (deltaScrollTop > 0 ? blitHeight : 0)),
+                    blitWidth, Math.abs(deltaScrollTop), true);
+            } else {
+                Bounds viewportBounds = getViewportBounds();
+                scrollPane.repaint(viewportBounds.x, viewportBounds.y, 
+                    viewportBounds.width, viewportBounds.height, true);
+            }
+
         } else {
             if (view != null) {
                 view.setLocation(view.getX(), columnHeaderHeight - scrollTop);