[banshee/grid] [DataView] Support child-level invalidation



commit 30292469901028fc736515ef141626bec4ac7a95
Author: Aaron Bockover <abockover novell com>
Date:   Fri Jan 22 18:46:41 2010 -0500

    [DataView] Support child-level invalidation

 .../Banshee.Collection.Gui/ColumnCellAlbum.cs      |    4 +-
 .../Hyena.Gui/Hyena.Data.Gui/DataViewChild.cs      |   15 ++++++++++
 .../Hyena.Data.Gui/ListView/ListViewBase.cs        |   15 ++++++++++
 .../Hyena.Data.Gui/ListView/ListView_Rendering.cs  |   30 +++----------------
 4 files changed, 37 insertions(+), 27 deletions(-)
---
diff --git a/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellAlbum.cs b/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellAlbum.cs
index 96b01b7..3578c02 100644
--- a/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellAlbum.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellAlbum.cs
@@ -260,13 +260,13 @@ namespace Banshee.Collection.Gui
         public override void CursorEnterEvent ()
         {
             is_prelit = true;
-            this.ParentLayout.View.QueueDraw ();
+            Invalidate ();
         }
 
         public override void CursorLeaveEvent ()
         {
             is_prelit = false;
-            this.ParentLayout.View.QueueDraw ();
+            Invalidate ();
         }
 
 #if false
diff --git a/src/Libraries/Hyena.Gui/Hyena.Data.Gui/DataViewChild.cs b/src/Libraries/Hyena.Gui/Hyena.Data.Gui/DataViewChild.cs
index 07b2cef..9480f7b 100644
--- a/src/Libraries/Hyena.Gui/Hyena.Data.Gui/DataViewChild.cs
+++ b/src/Libraries/Hyena.Gui/Hyena.Data.Gui/DataViewChild.cs
@@ -38,6 +38,12 @@ namespace Hyena.Data.Gui
         public DataViewLayout ParentLayout { get; set; }
         public int ModelRowIndex { get; set; }
 
+        public override void Invalidate (Gdk.Rectangle area)
+        {
+            Gdk.Window.DebugUpdates = true;
+            ParentLayout.View.QueueDirtyRegion (area);
+        }
+
 #region Data Binding
 
         private PropertyInfo property_info;
@@ -125,6 +131,15 @@ namespace Hyena.Data.Gui
         public abstract void Render (CellContext context);
         public abstract Gdk.Size Measure ();
 
+        public virtual void Invalidate (Gdk.Rectangle area)
+        {
+        }
+
+        public void Invalidate ()
+        {
+            Invalidate (Allocation);
+        }
+
         public virtual bool ButtonEvent (int x, int y, bool pressed, uint button)
         {
             return false;
diff --git a/src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListViewBase.cs b/src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListViewBase.cs
index 40e748c..d6c3722 100644
--- a/src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListViewBase.cs
+++ b/src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListViewBase.cs
@@ -33,5 +33,20 @@ namespace Hyena.Data.Gui
 {
     public class ListViewBase : Widget
     {
+        public void QueueDirtyRegion (Gdk.Rectangle region)
+        {
+            region.Intersect (Allocation);
+            QueueDrawArea (region.X, region.Y, region.Width, region.Height);
+        }
+
+        public void QueueDirtyRegion (Cairo.Rectangle region)
+        {
+            QueueDirtyRegion (new Gdk.Rectangle () {
+                X = (int)Math.Floor (region.X),
+                Y = (int)Math.Floor (region.Y),
+                Width = (int)Math.Ceiling (region.Width),
+                Height = (int)Math.Ceiling (region.Height)
+            });
+        }
     }
 }
diff --git a/src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs b/src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs
index 6fb7865..f872340 100644
--- a/src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs
+++ b/src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs
@@ -532,6 +532,11 @@ namespace Hyena.Data.Gui
             }
         }
 
+        protected void QueueDirtyRegion ()
+        {
+            QueueDirtyRegion (list_rendering_alloc);
+        }
+
         protected virtual void ColumnCellDataProvider (ColumnCell cell, object boundItem)
         {
         }
@@ -585,30 +590,5 @@ namespace Hyena.Data.Gui
 
 #endregion
 
-#region Invalidation
-
-        protected void QueueDirtyRegion (Gdk.Rectangle region)
-        {
-            region.Intersect (Allocation);
-            QueueDrawArea (region.X, region.Y, region.Width, region.Height);
-        }
-
-        protected void QueueDirtyRegion (Cairo.Rectangle region)
-        {
-            QueueDirtyRegion (new Gdk.Rectangle () {
-                X = (int)Math.Floor (region.X),
-                Y = (int)Math.Floor (region.Y),
-                Width = (int)Math.Ceiling (region.Width),
-                Height = (int)Math.Ceiling (region.Height)
-            });
-        }
-
-        protected void QueueDirtyRegion ()
-        {
-            QueueDirtyRegion (list_rendering_alloc);
-        }
-
-#endregion
-
     }
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]