[banshee/grid] [DataView] Support child-level invalidation
- From: Aaron Bockover <abock src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [banshee/grid] [DataView] Support child-level invalidation
- Date: Fri, 22 Jan 2010 23:40:04 +0000 (UTC)
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]