[banshee] Dispose TreePath instances (bgo#555365)
- From: Alexander Kojevnikov <alexk src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [banshee] Dispose TreePath instances (bgo#555365)
- Date: Wed, 10 Feb 2010 02:34:47 +0000 (UTC)
commit 1b04039d5873c74e9bedcdbb9530a3ead60d9dd3
Author: Alexander Kojevnikov <alexander kojevnikov com>
Date: Wed Feb 10 13:34:37 2010 +1100
Dispose TreePath instances (bgo#555365)
.../Banshee.Sources.Gui/SourceRowRenderer.cs | 27 +++++++------
.../Banshee.Sources.Gui/SourceView.cs | 42 +++++++++++--------
2 files changed, 38 insertions(+), 31 deletions(-)
---
diff --git a/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceRowRenderer.cs b/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceRowRenderer.cs
index 35fc0b8..b8ea030 100644
--- a/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceRowRenderer.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceRowRenderer.cs
@@ -51,7 +51,7 @@ namespace Banshee.Sources.Gui
}
renderer.Source = source;
- renderer.Path = model.GetPath (iter);
+ renderer.Iter = iter;
if (source == null) {
return;
@@ -75,10 +75,10 @@ namespace Banshee.Sources.Gui
set { parent_widget = value; }
}
- private TreePath path;
- public TreePath Path {
- get { return path; }
- set { path = value; }
+ private TreeIter iter = TreeIter.Zero;
+ public TreeIter Iter {
+ get { return iter; }
+ set { iter = value; }
}
private int padding;
@@ -140,10 +140,10 @@ namespace Banshee.Sources.Gui
}
view = widget as SourceView;
- bool path_selected = view != null && view.Selection.PathIsSelected (path);
+ bool selected = view != null && view.Selection.IterIsSelected (iter);
StateType state = RendererStateToWidgetState (widget, flags);
- RenderSelection (drawable, background_area, path_selected, state);
+ RenderSelection (drawable, background_area, selected, state);
int title_layout_width = 0, title_layout_height = 0;
int count_layout_width = 0, count_layout_height = 0;
@@ -232,13 +232,13 @@ namespace Banshee.Sources.Gui
}
private void RenderSelection (Gdk.Drawable drawable, Gdk.Rectangle background_area,
- bool path_selected, StateType state)
+ bool selected, StateType state)
{
if (view == null) {
return;
}
- if (path_selected && view.Cr != null) {
+ if (selected && view.Cr != null) {
Gdk.Rectangle rect = background_area;
rect.X -= 2;
rect.Width += 4;
@@ -251,12 +251,11 @@ namespace Banshee.Sources.Gui
view.Theme.DrawRowSelection (view.Cr, background_area.X + 1, background_area.Y + 1,
background_area.Width - 2, background_area.Height - 2);
}
- } else if (path != null && path.Equals (view.HighlightedPath) && view.Cr != null) {
+ } else if (!TreeIter.Zero.Equals (iter) && iter.Equals (view.HighlightedIter) && view.Cr != null) {
view.Theme.DrawRowSelection (view.Cr, background_area.X + 1, background_area.Y + 1,
background_area.Width - 2, background_area.Height - 2, false);
} else if (view.NotifyStage.ActorCount > 0 && view.Cr != null) {
- TreeIter iter;
- if (view.Model.GetIter (out iter, path) && view.NotifyStage.Contains (iter)) {
+ if (!TreeIter.Zero.Equals (iter) && view.NotifyStage.Contains (iter)) {
Actor<TreeIter> actor = view.NotifyStage[iter];
Cairo.Color color = view.Theme.Colors.GetWidgetColor (GtkColorClass.Background, StateType.Active);
color.A = Math.Sin (actor.Percent * Math.PI);
@@ -294,7 +293,9 @@ namespace Banshee.Sources.Gui
}
view.EditingRow = false;
- view.UpdateRow (new TreePath (edit.path), edit.Text);
+ using (var tree_path = new TreePath (edit.path)) {
+ view.UpdateRow (tree_path, edit.Text);
+ }
}
}
}
diff --git a/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView.cs b/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView.cs
index 2586b27..c2a359c 100644
--- a/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView.cs
@@ -59,7 +59,7 @@ namespace Banshee.Sources.Gui
private Stage<TreeIter> notify_stage = new Stage<TreeIter> (2000);
private TreeViewColumn focus_column;
- private TreePath highlight_path;
+ private TreeIter highlight_iter = TreeIter.Zero;
private SourceModel store;
private int current_timeout = -1;
private bool editing_row = false;
@@ -131,8 +131,10 @@ namespace Banshee.Sources.Gui
return false;
}
- Gdk.Rectangle rect = GetBackgroundArea (store.GetPath (actor.Target), focus_column);
- QueueDrawArea (rect.X, rect.Y, rect.Width, rect.Height);
+ using (var path = store.GetPath (actor.Target) ) {
+ Gdk.Rectangle rect = GetBackgroundArea (path, focus_column);
+ QueueDrawArea (rect.X, rect.Y, rect.Width, rect.Height);
+ }
return true;
};
}
@@ -192,9 +194,12 @@ namespace Banshee.Sources.Gui
}
if (press.Button == 3) {
- HighlightPath (path);
- OnPopupMenu ();
- return true;
+ TreeIter iter;
+ if (Model.GetIter (out iter, path)) {
+ HighlightIter (iter);
+ OnPopupMenu ();
+ return true;
+ }
}
if (!source.CanActivate) {
@@ -334,8 +339,9 @@ namespace Banshee.Sources.Gui
private void Expand (TreeIter iter)
{
- TreePath path = store.GetPath (iter);
- ExpandRow (path, true);
+ using (var path = store.GetPath (iter)) {
+ ExpandRow (path, true);
+ }
}
private void OnSourceUserNotifyUpdated (object o, EventArgs args)
@@ -392,7 +398,9 @@ namespace Banshee.Sources.Gui
}
renderer.Editable = true;
- SetCursor (store.GetPath (iter), focus_column, true);
+ using (var path = store.GetPath (iter)) {
+ SetCursor (path, focus_column, true);
+ }
renderer.Editable = false;
}
@@ -405,15 +413,15 @@ namespace Banshee.Sources.Gui
}
}
- public void HighlightPath (TreePath path)
+ public void HighlightIter (TreeIter iter)
{
- highlight_path = path;
+ highlight_iter = iter;
QueueDraw ();
}
public void ResetHighlight ()
{
- highlight_path = null;
+ highlight_iter = TreeIter.Zero;
QueueDraw ();
}
@@ -423,13 +431,11 @@ namespace Banshee.Sources.Gui
public Source HighlightedSource {
get {
- TreeIter iter;
-
- if (highlight_path == null || !store.GetIter (out iter, highlight_path)) {
+ if (TreeIter.Zero.Equals (highlight_iter)) {
return null;
}
- return store.GetValue (iter, 0) as Source;
+ return store.GetValue (highlight_iter, 0) as Source;
}
}
@@ -445,8 +451,8 @@ namespace Banshee.Sources.Gui
#region Internal Properties
- internal TreePath HighlightedPath {
- get { return highlight_path; }
+ internal TreeIter HighlightedIter {
+ get { return highlight_iter; }
}
internal Cairo.Context Cr {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]