Author: sdelcroix
Date: Wed Jan 16 10:26:18 2008
New Revision: 3543
URL: http://svn.gnome.org/viewvc/f-spot?rev=3543&view=rev

Log:
fixing indent

Modified:
   trunk/src/Widgets/IconView.cs

Modified: trunk/src/Widgets/IconView.cs
==============================================================================
--- trunk/src/Widgets/IconView.cs       (original)
+++ trunk/src/Widgets/IconView.cs       Wed Jan 16 10:26:18 2008
@@ -1,12 +1,14 @@
-//
-// IconView.cs:
-//
-// Authors:
-//    Ettore Perazzoli
-//    Larry Ewing <[EMAIL PROTECTED]>
-//
-// (C) 2003 Novell, Inc.
-//
+/*
+* Widgets/IconView.cs
+*
+* Author(s):
+       *       Etore Perazzoli
+*      Larry Ewing <[EMAIL PROTECTED]>
+*      Stephane Delcroix <[EMAIL PROTECTED]>
+*
+* This is free software. See COPYING for details.
+*/
+
 using Gtk;
 using Gdk;
 using Gnome;
@@ -19,20 +21,20 @@
 namespace FSpot.Widgets
 {
        public class IconView : Gtk.Layout {
-       
+
                // Public properties.
                FSpot.PixbufCache cache;
-       
+
                /* preserve the scroll postion when possible */
                private bool scroll;
                private double scroll_value;
-       
+
                /* suppress it sometimes */
                bool suppress_scroll = false;
-               
+
                // Zooming factor.
                protected const double ZOOM_FACTOR = 1.2;
-       
+
                /* Width of the thumbnails. */
                protected int thumbnail_width = 128;
                protected const int MAX_THUMBNAIL_WIDTH = 256;
@@ -44,17 +46,17 @@
                        set {
                                value = Math.Min(value, MAX_THUMBNAIL_WIDTH);
                                value = Math.Max(value, MIN_THUMBNAIL_WIDTH);
-       
+
                                if (thumbnail_width != value) {
                                        thumbnail_width = value;
                                        QueueResize ();
-       
+
                                        if (ZoomChanged != null)
                                                ZoomChanged (this, 
System.EventArgs.Empty);
                                }
                        }
                }
-       
+
                public double Zoom {
                        get {
                                return ((double)(ThumbnailWidth - 
MIN_THUMBNAIL_WIDTH) / (double)(MAX_THUMBNAIL_WIDTH - MIN_THUMBNAIL_WIDTH));
@@ -63,7 +65,7 @@
                                ThumbnailWidth = (int) ((value) * 
(MAX_THUMBNAIL_WIDTH - MIN_THUMBNAIL_WIDTH)) + MIN_THUMBNAIL_WIDTH;
                        }
                }
-       
+
                protected double thumbnail_ratio = 4.0 / 3.0;
                public double ThumbnailRatio {
                        get {
@@ -74,46 +76,46 @@
                                QueueResize ();
                        }
                }
-       
+
                public int ThumbnailHeight {
                        get {
                                return (int) Math.Round ((double) 
thumbnail_width / ThumbnailRatio);
                        }
                }
-       
+
                public FSpot.PixbufCache Cache {
                        get {
                                return cache;
                        }
                }
-       
+
                private bool display_tags = true;
                public bool DisplayTags {
                        get {
                                return display_tags;
                        }
-       
+
                        set {
                                display_tags = value;
                                QueueResize ();
                        }
                }
-       
+
                private bool display_dates = true;
                public bool DisplayDates {
                        get {
                                if (cell_width > 100)
                                        return display_dates;
-                               else 
+                               else
                                        return false;
                        }
-       
+
                        set {
                                display_dates = value;
                                QueueResize ();
                        }
                }
-       
+
                private bool display_filenames = false;
                public bool DisplayFilenames {
                        get { return display_filenames; }
@@ -133,42 +135,42 @@
                                else
                                        return false;
                        }
-                       
+
                        set {
                                display_ratings  = value;
                                QueueResize ();
                        }
                }
-       
+
                // Size of the frame around the thumbnail.
                protected int cell_border_width = 10;
-       
+
                // Border around the scrolled area.
                protected const int BORDER_SIZE = 6;
-       
-               // Thickness of the outline used to indicate selected items. 
+
+               // Thickness of the outline used to indicate selected items.
                private const int SELECTION_THICKNESS = 5;
-       
+
                // Size of the tag icon in the view.
                protected int tag_icon_size = 16;
-       
+
                // Horizontal spacing between the tag icons
                protected int tag_icon_hspacing = 2;
-       
+
                // Vertical spacing between the thumbnail and additional infos 
(tags, dates, ...).
                protected int tag_icon_vspacing = 3;
-       
+
                // Various other layout values.
                protected int cells_per_row;
                protected int cell_width;
                protected int cell_height;
-       
+
                // The first pixel line that is currently on the screen (i.e. 
in the current
                // scroll region).  Used to compute the area that went 
offscreen in the "changed"
                // signal handler for the vertical GtkAdjustment.
                private int y_offset;
                private int x_offset;
-       
+
                // Focus Handling
                private int real_focus_cell;
                public int FocusCell {
@@ -189,61 +191,61 @@
                // distinguish the GDK_2BUTTON_PRESS events that we actually 
care
                // about.
                private int click_count;
-       
+
                // Public events.
                public delegate void DoubleClickedHandler (IconView view, int 
clicked_item);
                public event DoubleClickedHandler DoubleClicked;
-               
+
                public delegate void ZoomChangedHandler (object sender, 
System.EventArgs args);
                public event ZoomChangedHandler ZoomChanged;
-       
+
                // Public API.
                public IconView (IntPtr raw) : base (raw) {}
-       
+
                protected IconView () : base (null, null)
                {
                        cache = new FSpot.PixbufCache ();
                        cache.OnPixbufLoaded += HandlePixbufLoaded;
-       
+
                        ScrollAdjustmentsSet += new ScrollAdjustmentsSetHandler 
(HandleScrollAdjustmentsSet);
-                       
+
                        ButtonPressEvent += new ButtonPressEventHandler 
(HandleButtonPressEvent);
                        ButtonReleaseEvent += new ButtonReleaseEventHandler 
(HandleButtonReleaseEvent);
                        KeyPressEvent += new KeyPressEventHandler 
(HandleKeyPressEvent);
                        ScrollEvent += new 
ScrollEventHandler(HandleScrollEvent);
-       
+
                        Destroyed += HandleDestroyed;
-       
+
                        AddEvents ((int) EventMask.KeyPressMask
-                                  | (int) EventMask.KeyReleaseMask 
-                                  | (int) EventMask.PointerMotionMask);
-                       
+                       | (int) EventMask.KeyReleaseMask
+                       | (int) EventMask.PointerMotionMask);
+
                        CanFocus = true;
-       
+
                        //FSpot.Global.ModifyColors (this);
                }
-               
-               public IconView (FSpot.IBrowsableCollection collection) : this 
() 
+
+               public IconView (FSpot.IBrowsableCollection collection) : this 
()
                {
                        this.collection = collection;
                        this.selection = new SelectionCollection (collection);
-                       
+
                        Name = "ImageContainer";
                        collection.Changed += HandleChanged;
                        collection.ItemsChanged += HandleItemsChanged;
-       
+
                        selection.DetailedChanged += HandleSelectionChanged;
                }
-       
+
                private void HandleSelectionChanged (FSpot.IBrowsableCollection 
collection, int [] ids)
                {
                        if (ids == null)
                                QueueDraw ();
-                       else 
+                       else
                                foreach (int id in ids)
                                        InvalidateCell (id);
                }
-       
+
                private void HandleChanged (FSpot.IBrowsableCollection sender)
                {
                        // FIXME we should probably try to merge the selection 
forward
@@ -251,7 +253,7 @@
                        suppress_scroll = true;
                        QueueResize ();
                }
-               
+
                private void HandleItemsChanged (FSpot.IBrowsableCollection 
sender, BrowsableArgs args)
                {
                        foreach (int item in args.Items) {
@@ -259,35 +261,35 @@
                                InvalidateCell (item);
                        }
                }
-       
+
                //
                // IPhotoSelection
                //
-       
+
                protected FSpot.IBrowsableCollection collection;
                public FSpot.IBrowsableCollection Collection {
                        get {
                                return collection;
                        }
                }
-       
+
                protected SelectionCollection selection;
                public SelectionCollection Selection {
                        get {
                                return selection;
                        }
                }
-       
+
                // FIXME right now a selection change triggers a complete view 
redraw
                // This should be optimized away by directly notifyiing the 
view of changed
-               // indexes rather than having the view connect to the 
collection.Changed event.      
+               // indexes rather than having the view connect to the 
collection.Changed event.
                public class SelectionCollection : IBrowsableCollection {
                        IBrowsableCollection parent;
                        Hashtable selected_cells;
                        int [] selection;
                        IBrowsableItem [] items;
                        IBrowsableItem [] old;
-       
+
                        public SelectionCollection (IBrowsableCollection 
collection)
                        {
                                this.selected_cells = new Hashtable ();
@@ -295,90 +297,90 @@
                                this.parent.Changed += HandleParentChanged;
                                this.parent.ItemsChanged += 
HandleParentItemsChanged;
                        }
-       
+
                        private void HandleParentChanged (IBrowsableCollection 
collection)
                        {
                                IBrowsableItem [] local = old;
                                selected_cells.Clear ();
                                ClearCached ();
-       
+
                                if (old != null) {
                                        int i = 0;
-       
+
                                        for (i = 0; i < local.Length; i++) {
                                                int parent_index = 
parent.IndexOf (local [i]);
                                                if (parent_index >= 0)
                                                        this.Add (parent_index, 
false);
                                        }
                                }
-       
+
                                // Call the directly so that we don't reset old 
immediately this way the old selection
                                // set isn't actually lost until we change it.
                                if (this.Changed != null)
                                        Changed (this);
-       
+
                                if (this.DetailedChanged != null)
                                        DetailedChanged (this, null);
-       
+
                        }
-                       
+
                        public void MarkChanged (int item)
                        {
                                // Forward the change event up to our parent
                                // we'll fire the event when the parent calls 
us back
                                parent.MarkChanged ((int) selected_cells 
[item]);
                        }
-       
+
                        private void HandleParentItemsChanged 
(IBrowsableCollection collection, BrowsableArgs args)
-                       {                       
+                       {
                                if (this.ItemsChanged == null)
                                        return;
-       
+
                                ArrayList local_ids = new ArrayList ();
                                foreach (int parent_index in args.Items) {
                                        // If the item isn't part of the 
selection ignore it
                                        if (!this.Contains (collection 
[parent_index]))
                                                return;
-       
+
                                        int local_index = this.IndexOf 
(parent_index);
                                        if (local_index >= 0)
                                                local_ids.Add (local_index);
                                }
-       
+
                                if (local_ids.Count == 0)
                                        return;
-       
+
                                ItemsChanged (this, new BrowsableArgs ((int 
[])local_ids.ToArray (typeof (int))));
                        }
-       
+
                        public int [] Ids {
                                get {
                                        if (selection != null)
                                                return selection;
-                                       
+
                                        selection = new int 
[selected_cells.Count];
-                                       
+
                                        int i = 0;
                                        foreach (int cell in 
selected_cells.Values)
                                                selection [i ++] = cell;
-                                       
+
                                        Array.Sort (selection);
                                        return selection;
                                }
                        }
-                       
+
                        public IBrowsableItem this [int index] {
                                get {
                                        int [] ids = this.Ids;
                                        return parent [ids[index]];
                                }
                        }
-       
+
                        public IBrowsableItem [] Items {
                                get {
                                        if (items != null)
                                                return items;
-                                       
+
                                        int [] ids = this.Ids;
                                        items = new IBrowsableItem [ids.Length];
                                        for (int i = 0; i < items.Length; i++) {
@@ -387,176 +389,176 @@
                                        return items;
                                }
                        }
-       
+
                        public void Clear ()
                        {
                                Clear (true);
                        }
-       
+
                        public void Clear (bool update)
                        {
                                int [] ids = Ids;
                                selected_cells.Clear ();
                                SignalChange (ids);
                        }
-       
+
                        public void Add (IBrowsableItem item)
                        {
                                if (this.Contains (item))
                                        return;
-       
+
                                int index = parent.IndexOf (item);
                                this.Add (index);
                        }
-       
+
                        public int Count {
                                get {
                                        return selected_cells.Count;
                                }
                        }
-       
+
                        public bool Contains (IBrowsableItem item)
                        {
                                return selected_cells.ContainsKey (item);
                        }
-       
+
                        public bool Contains (int num)
                        {
                                if (num < 0 || num > parent.Count)
                                        return false;
-       
+
                                return this.Contains (parent [num]);
                        }
-                       
+
                        public void Add (int num)
                        {
                                this.Add (num, true);
                        }
-       
+
                        private void Add (int num, bool notify)
                        {
                                if (num == -1)
                                        return;
-                              
+
                                if (this.Contains (num))
-                                   return;
-                               
+                                       return;
+
                                IBrowsableItem item = parent [num];
                                selected_cells [item] = num;
-       
+
                                if (notify)
                                        SignalChange (new int [] {num});
                        }
-       
+
                        public void Add (int start, int end)
                        {
                                if (start == -1 || end == -1)
                                        return;
-                               
+
                                int current = Math.Min (start, end);
-                               int final = Math.Max (start, end);              
                
+                               int final = Math.Max (start, end);
                                int count = final - current + 1;
                                int [] ids = new int [count];
-       
+
                                for (int i = 0; i < count; i++) {
                                        this.Add (current, false);
                                        ids [i] = current;
                                        current++;
                                }
-                               
+
                                SignalChange (ids);
                        }
-                       
+
                        // Remove a range, except the start entry
                        public void Remove (int start, int end)
                        {
                                if (start == -1 || end == -1)
                                        return;
-                               
+
                                int current = Math.Min (start + 1, end);
-                               int final = Math.Max (start - 1, end);          
                
+                               int final = Math.Max (start - 1, end);
                                int count = final - current + 1;
                                int [] ids = new int [count];
-       
+
                                for (int i = 0; i < count; i++) {
                                        this.Remove (current, false);
                                        ids [i] = current;
                                        current++;
                                }
-       
+
                                SignalChange (ids);
                        }
-       
+
                        public int IndexOf (int parent_index)
                        {
                                return System.Array.IndexOf (this.Ids, 
parent_index);
                        }
-                       
+
                        public int IndexOf (IBrowsableItem item)
                        {
                                if (!this.Contains (item))
                                        return -1;
-       
+
                                int parent_index = (int) selected_cells [item];
                                return System.Array.IndexOf (Ids, parent_index);
                        }
-       
+
                        public void Remove (int cell)
                        {
                                Remove (cell, true);
                        }
-       
+
                        private void Remove (int cell, bool notify)
                        {
                                IBrowsableItem item = parent [cell];
                                if (item != null)
                                        this.Remove (item, notify);
-       
+
                        }
-       
+
                        public void Remove (IBrowsableItem item)
                        {
                                Remove (item, true);
                        }
-       
+
                        private void Remove (IBrowsableItem item, bool notify)
                        {
                                if (item == null)
                                        return;
-       
+
                                int parent_index = (int) selected_cells [item];
                                selected_cells.Remove (item);
-       
+
                                if (notify)
                                        SignalChange (new int [] 
{parent_index});
                        }
-       
+
                        public event IBrowsableCollectionChangedHandler Changed;
                        public event IBrowsableCollectionItemsChangedHandler 
ItemsChanged;
-       
+
                        public delegate void DetailedCollectionChanged 
(IBrowsableCollection collection, int [] ids);
                        public event DetailedCollectionChanged DetailedChanged;
-                       
+
                        private void ClearCached ()
                        {
                                selection = null;
                                items = null;
                        }
-                       
-                       private void SignalChange (int [] ids) 
+
+                       private void SignalChange (int [] ids)
                        {
                                ClearCached ();
                                old = this.Items;
-                               
-                               
+
+
                                if (Changed != null)
                                        Changed (this);
-                               
+
                                if (DetailedChanged!= null)
                                        DetailedChanged (this, ids);
                        }
                }
-       
+
                // Updating.
                public void UpdateThumbnail (int thumbnail_num)
                {
@@ -565,80 +567,80 @@
                        cache.Remove (thumbnail_path);
                        InvalidateCell (thumbnail_num);
                }
-       
+
                // Cell Geometry
                public int CellAtPosition (int x, int y)
                {
                        return CellAtPosition (x, y, true);
                }
-       
+
                public int CellAtPosition (int x, int y, bool crop_visible)
                {
                        if (collection == null)
                                return -1;
-                       
-                       if (crop_visible 
-                           && ((y < (int)Vadjustment.Value || y > 
(int)Vadjustment.Value + Allocation.Height)
-                               || (x < (int)Hadjustment.Value || x > 
(int)Hadjustment.Value + Allocation.Width)))
-                               return -1;
-       
+
+                       if (crop_visible
+                               && ((y < (int)Vadjustment.Value || y > 
(int)Vadjustment.Value + Allocation.Height)
+                       || (x < (int)Hadjustment.Value || x > 
(int)Hadjustment.Value + Allocation.Width)))
+                       return -1;
+
                        if (x < BORDER_SIZE || x >= BORDER_SIZE + cells_per_row 
* cell_width)
                                return -1;
                        if (y < BORDER_SIZE || y >= BORDER_SIZE + 
(collection.Count / cells_per_row + 1) * cell_height)
                                return -1;
-       
+
                        int column = (int) ((x - BORDER_SIZE) / cell_width);
                        int row = (int) ((y - BORDER_SIZE) / cell_height);
                        int cell_num = column + row * cells_per_row;
-       
+
                        if (cell_num < collection.Count)
                                return (int) cell_num;
                        else
                                return -1;
                }
-               
+
                public int TopLeftVisibleCell ()
                {
                        //return CellAtPosition(BORDER_SIZE, 
(int)Vadjustment.Value + BORDER_SIZE + 8);
                        return CellAtPosition(BORDER_SIZE, (int) 
(Vadjustment.Value + Allocation.Height * (Vadjustment.Value / 
Vadjustment.Upper)) + BORDER_SIZE + 8);
                }
-       
+
                public void GetCellCenter (int cell_num, out int x, out int y)
                {
                        if (cell_num == -1) {
                                x = -1;
                                y = -1;
                        }
-       
+
                        x = BORDER_SIZE + (cell_num % cells_per_row) * 
cell_width + cell_width / 2;
                        y = BORDER_SIZE + (cell_num / cells_per_row) * 
cell_height + cell_height / 2;
                }
-       
+
                public void GetCellSize (int cell_num, out int w, out int h)
                {
                        // Trivial for now.
                        w = cell_width;
                        h = cell_height;
                }
-       
-       
+
+
                // Private utility methods.
                public void SelectAllCells ()
                {
                        selection.Add (0, collection.Count - 1);
                }
-       
+
                private void ToggleCell (int cell_num)
                {
                        if (selection.Contains (cell_num))
-                               selection.Remove (cell_num);
+                               selection.Remove (cell_num);
                        else
                                selection.Add (cell_num);
                }
-       
-       
+
+
                // Layout and drawing.
-               
+
                // FIXME I can't find a c# wrapper for the C PANGO_PIXELS () 
macro
                // So this Function is for that.
                protected static int PangoPixels (int val)
@@ -646,98 +648,98 @@
                        return val >= 0 ? (val + 1024 / 2) / 1024 :
                                (val - 1024 / 2) / 1024;
                }
-               
+
                protected virtual void UpdateLayout ()
                {
                        UpdateLayout (Allocation);
                }
-       
+
                protected virtual void UpdateLayout (Gdk.Rectangle Allocation)
                {
                        int available_width = Allocation.Width - 2 * 
BORDER_SIZE;
-       
+
                        cell_width = ThumbnailWidth + 2 * cell_border_width;
                        cell_height = ThumbnailHeight + 2 * cell_border_width;
                        cells_per_row = Math.Max ((int) (available_width / 
cell_width), 1);
                        cell_width += (available_width - cells_per_row * 
cell_width) / cells_per_row;
-                       
+
                        if (DisplayTags || DisplayDates || DisplayFilenames)
                                cell_height += tag_icon_vspacing;
-       
+
                        if (DisplayTags)
                                cell_height += tag_icon_size;
-                       
+
                        if (DisplayDates && this.Style != null) {
-                               Pango.FontMetrics metrics = 
this.PangoContext.GetMetrics (this.Style.FontDescription, 
-                                                                               
          Pango.Language.FromString ("en_US"));
+                               Pango.FontMetrics metrics = 
this.PangoContext.GetMetrics (this.Style.FontDescription,
+                                               Pango.Language.FromString 
("en_US"));
                                cell_height += PangoPixels (metrics.Ascent + 
metrics.Descent);
                        }
-       
+
                        if (DisplayFilenames && this.Style != null) {
                                Pango.FontMetrics metrics = 
this.PangoContext.GetMetrics (this.Style.FontDescription,
-                                                                               
        Pango.Language.FromString ("en_US"));
+                                               Pango.Language.FromString 
("en_US"));
                                cell_height += PangoPixels (metrics.Ascent + 
metrics.Descent);
                        }
-       
+
                        int num_thumbnails;
                        if (collection != null)
                                num_thumbnails = collection.Count;
                        else
                                num_thumbnails = 0;
-       
+
                        int num_rows = num_thumbnails / cells_per_row;
                        if (num_thumbnails % cells_per_row != 0)
                                num_rows ++;
-       
+
                        int height = num_rows * cell_height + 2 * BORDER_SIZE;
-       
+
                        Vadjustment.StepIncrement = cell_height;
                        int x = (int)(Hadjustment.Value);
                        int y = (int)(height * scroll_value);
                        SetSize (x, y, (int) Allocation.Width, (int) height);
                }
-       
+
                void SetSize (int x, int y, int width, int height)
                {
-                       bool xchange = false; 
-                       bool ychange = false; 
-       
+                       bool xchange = false;
+                       bool ychange = false;
+
                        Hadjustment.Upper = System.Math.Max (Allocation.Width, 
width);
                        Vadjustment.Upper = System.Math.Max (Allocation.Height, 
height);
-       
+
                        if (scroll) {
                                xchange = (int)(Hadjustment.Value) != x;
                                ychange = (int)(Vadjustment.Value) != y;
                                scroll = false;
                        }
-       
-                       if (IsRealized) 
+
+                       if (IsRealized)
                                BinWindow.FreezeUpdates ();
-       
+
                        if (xchange || ychange) {
-                               if (IsRealized) 
+                               if (IsRealized)
                                        BinWindow.MoveResize (-x, -y, 
(int)(Hadjustment.Upper), (int)(Vadjustment.Upper));
                                Vadjustment.Value = y;
                                Hadjustment.Value = x;
                        }
-       
+
                        if (scroll)
                                scroll = false;
-       
+
                        if (this.Width != Allocation.Width || this.Height != 
Allocation.Height)
                                SetSize ((uint)Allocation.Width, (uint)height);
-                       
+
                        if (xchange || ychange) {
                                Vadjustment.ChangeValue ();
                                Hadjustment.ChangeValue ();
                        }
-                       
+
                        if (IsRealized) {
                                BinWindow.ThawUpdates ();
                                BinWindow.ProcessUpdates (true);
                        }
                }
-       
+
                int ThrobExpansion (int cell, bool selected)
                {
                        int expansion = 0;
@@ -748,88 +750,88 @@
                                        s = Math.Cos (-2 * Math.PI * t);
                                else
                                        s = 1 - Math.Cos (-2 * Math.PI * t);
-                               
+
                                expansion = (int) (SELECTION_THICKNESS * s);
                        } else if (selected) {
                                expansion = SELECTION_THICKNESS;
                        }
-       
+
                        return expansion;
                }
-       
+
                System.Collections.Hashtable date_layouts = new Hashtable ();
                // FIXME Cache the GCs?
                private void DrawCell (int thumbnail_num, Gdk.Rectangle area)
                {
                        Gdk.Rectangle bounds = CellBounds (thumbnail_num);
-                       
+
                        if (!bounds.Intersect (area, out area))
                                return;
-                       
+
                        FSpot.IBrowsableItem photo = collection [thumbnail_num];
                        string thumbnail_path = 
FSpot.ThumbnailGenerator.ThumbnailPath (photo.DefaultVersionUri);
-                       
+
                        FSpot.PixbufCache.CacheEntry entry = cache.Lookup 
(thumbnail_path);
                        if (entry == null)
                                cache.Request (thumbnail_path, thumbnail_num, 
ThumbnailWidth, ThumbnailHeight);
                        else
                                entry.Data = thumbnail_num;
-       
+
                        bool selected = selection.Contains (thumbnail_num);
                        StateType cell_state = selected ? (HasFocus ? 
StateType.Selected : StateType.Active) : State;
-                       
+
                        if (cell_state != State)
-                               Style.PaintBox (Style, BinWindow, cell_state, 
-                                               ShadowType.Out, area, this, 
"IconView", 
-                                               bounds.X, bounds.Y,
-                                               bounds.Width - 1, bounds.Height 
- 1);
-                       
+                               Style.PaintBox (Style, BinWindow, cell_state,
+                                       ShadowType.Out, area, this, "IconView",
+                                       bounds.X, bounds.Y,
+                                       bounds.Width - 1, bounds.Height - 1);
+
                        Gdk.Rectangle focus = Gdk.Rectangle.Inflate (bounds, 
-3, -3);
-       
+
                        if (HasFocus && thumbnail_num == FocusCell) {
-                               Style.PaintFocus(Style, BinWindow, 
-                                                cell_state, area, 
-                                                this, null, 
-                                                focus.X, focus.Y, 
-                                                focus.Width, focus.Height);
+                               Style.PaintFocus(Style, BinWindow,
+                                               cell_state, area,
+                                               this, null,
+                                               focus.X, focus.Y,
+                                               focus.Width, focus.Height);
                        }
-       
+
                        Gdk.Rectangle region = Gdk.Rectangle.Zero;
                        Gdk.Rectangle image_bounds = Gdk.Rectangle.Inflate 
(bounds, -cell_border_width, -cell_border_width);
                        int expansion = ThrobExpansion (thumbnail_num, 
selected);
-       
+
                        Gdk.Pixbuf thumbnail = null;
                        if (entry != null)
                                thumbnail = entry.ShallowCopyPixbuf ();
-       
+
                        if (Gdk.Rectangle.Inflate (image_bounds, expansion + 1, 
expansion + 1).Intersect (area, out image_bounds) && thumbnail != null) {
-                               
-                               PixbufUtils.Fit (thumbnail, ThumbnailWidth, 
ThumbnailHeight, 
-                                                true, out region.Width, out 
region.Height);
-                               
+
+                               PixbufUtils.Fit (thumbnail, ThumbnailWidth, 
ThumbnailHeight,
+                                               true, out region.Width, out 
region.Height);
+
                                region.X = (int) (bounds.X + (bounds.Width - 
region.Width) / 2);
                                region.Y = (int) bounds.Y + ThumbnailHeight - 
region.Height + cell_border_width;
-                               
-                               if (Math.Abs (region.Width - thumbnail.Width) > 
1 
+
+                               if (Math.Abs (region.Width - thumbnail.Width) > 
1
                                        && Math.Abs (region.Height - 
thumbnail.Height) > 1)
-                                       cache.Reload (entry, thumbnail_num, 
thumbnail.Width, thumbnail.Height);
-       
+                               cache.Reload (entry, thumbnail_num, 
thumbnail.Width, thumbnail.Height);
+
                                region = Gdk.Rectangle.Inflate (region, 
expansion, expansion);
-                               Pixbuf temp_thumbnail;                  
+                               Pixbuf temp_thumbnail;
                                region.Width = System.Math.Max (1, 
region.Width);
-                               region.Height = System.Math.Max (1, 
region.Height); 
-       
-                               if (Math.Abs (region.Width - thumbnail.Width) > 
1 
+                               region.Height = System.Math.Max (1, 
region.Height);
+
+                               if (Math.Abs (region.Width - thumbnail.Width) > 
1
                                        && Math.Abs (region.Height - 
thumbnail.Height) > 1) {
                                        if (region.Width < thumbnail.Width && 
region.Height < thumbnail.Height) {
                                                /*
-                                               temp_thumbnail = 
PixbufUtils.ScaleDown (thumbnail, 
-                                                                               
        region.Width, region.Height);
+                                               temp_thumbnail = 
PixbufUtils.ScaleDown (thumbnail,
+                                                               region.Width, 
region.Height);
                                                */
                                                temp_thumbnail = 
thumbnail.ScaleSimple (region.Width, region.Height,
-                                                                               
        InterpType.Bilinear);
-                                                                               
      
-                                               
+                                                               
InterpType.Bilinear);
+
+
                                                lock (entry) {
                                                        if (entry.Reload && 
expansion == 0 && !entry.IsDisposed) {
                                                                
entry.SetPixbufExtended (PixbufUtils.ShallowCopy (temp_thumbnail), false);
@@ -837,45 +839,45 @@
                                                        }
                                                }
                                        } else {
-                                               temp_thumbnail = 
thumbnail.ScaleSimple (region.Width, region.Height, 
-                                                                               
        InterpType.Bilinear);
+                                               temp_thumbnail = 
thumbnail.ScaleSimple (region.Width, region.Height,
+                                                               
InterpType.Bilinear);
                                        }
-       
+
                                        PixbufUtils.CopyThumbnailOptions 
(thumbnail, temp_thumbnail);
                                } else
                                        temp_thumbnail = thumbnail;
-       
+
                                // FIXME There seems to be a rounding issue 
between the
                                // scaled thumbnail sizes, we avoid this for 
now by using
                                // the actual thumnail sizes here.
                                region.Width = temp_thumbnail.Width;
                                region.Height = temp_thumbnail.Height;
-                               
+
                                Gdk.Rectangle draw = Gdk.Rectangle.Inflate 
(region, 1, 1);
-                               
-                               if (!temp_thumbnail.HasAlpha) 
+
+                               if (!temp_thumbnail.HasAlpha)
                                        Style.PaintShadow (Style, BinWindow, 
cell_state,
-                                                          ShadowType.Out, 
area, this, 
-                                                          "IconView", 
-                                                          draw.X, draw.Y, 
-                                                          draw.Width, 
draw.Height);                    
-                               
+                                               ShadowType.Out, area, this,
+                                               "IconView",
+                                               draw.X, draw.Y,
+                                               draw.Width, draw.Height);
+
                                if (region.Intersect (area, out draw)) {
                                        temp_thumbnail.RenderToDrawable 
(BinWindow, Style.WhiteGC,
-                                                                        draw.X 
- region.X, 
-                                                                        draw.Y 
- region.Y, 
-                                                                        
draw.X, draw.Y, 
-                                                                        
draw.Width, draw.Height, 
-                                                                        
RgbDither.None, 
-                                                                        
draw.X, draw.Y);
+                                                       draw.X - region.X,
+                                                       draw.Y - region.Y,
+                                                       draw.X, draw.Y,
+                                                       draw.Width, draw.Height,
+                                                       RgbDither.None,
+                                                       draw.X, draw.Y);
                                }
-                               
+
                                if (temp_thumbnail != thumbnail) {
                                        temp_thumbnail.Dispose ();
                                }
-                               
+
                        }
-                       
+
                        if (thumbnail != null) {
                                thumbnail.Dispose ();
                        }
@@ -897,99 +899,99 @@
                                } else {
                                        date = photo.Time.ToLocalTime 
().ToShortDateString ();
                                }
-       
+
                                Pango.Layout layout = 
(Pango.Layout)date_layouts [date];
                                if (layout == null) {
                                        layout = new Pango.Layout 
(this.PangoContext);
                                        layout.SetText (date);
                                        date_layouts [date] = layout;
                                }
-                               
+
                                layout.GetPixelSize (out layout_bounds.Width, 
out layout_bounds.Height);
-       
+
                                layout_bounds.Y = bounds.Y + bounds.Height - 
cell_border_width - layout_bounds.Height + tag_icon_vspacing;
                                layout_bounds.X = bounds.X + (bounds.Width - 
layout_bounds.Width) / 2;
-                               
+
                                if (DisplayTags)
                                        layout_bounds.Y -= tag_icon_size;
-       
+
                                if (DisplayFilenames) {
                                        Pango.FontMetrics metrics = 
this.PangoContext.GetMetrics (this.Style.FontDescription,
                                                        
Pango.Language.FromString ("en_US"));
-                                       layout_bounds.Y -= PangoPixels 
(metrics.Ascent + metrics.Descent); 
+                                       layout_bounds.Y -= PangoPixels 
(metrics.Ascent + metrics.Descent);
                                }
-       
+
                                if (layout_bounds.Intersect (area, out region)) 
{
                                        Style.PaintLayout (Style, BinWindow, 
cell_state,
-                                                          true, area, this, 
"IconView", 
-                                                          layout_bounds.X, 
layout_bounds.Y, 
-                                                          layout);
+                                                       true, area, this, 
"IconView",
+                                                       layout_bounds.X, 
layout_bounds.Y,
+                                                       layout);
                                }
                        }
-       
+
                        if (DisplayFilenames) {
-       
+
                                string filename = System.IO.Path.GetFileName 
(photo.DefaultVersionUri.LocalPath);
                                Pango.Layout layout = new Pango.Layout 
(this.PangoContext);
                                layout.SetText (filename);
-                               
+
                                layout.GetPixelSize (out layout_bounds.Width, 
out layout_bounds.Height);
-       
+
                                layout_bounds.Y = bounds.Y + bounds.Height - 
cell_border_width - layout_bounds.Height + tag_icon_vspacing;
                                layout_bounds.X = bounds.X + (bounds.Width - 
layout_bounds.Width) / 2;
-                               
+
                                if (DisplayTags)
                                        layout_bounds.Y -= tag_icon_size;
-       
+
                                if (layout_bounds.Intersect (area, out region)) 
{
                                        Style.PaintLayout (Style, BinWindow, 
cell_state,
-                                                          true, area, this, 
"IconView", 
-                                                          layout_bounds.X, 
layout_bounds.Y, 
-                                                          layout);
+                                                       true, area, this, 
"IconView",
+                                                       layout_bounds.X, 
layout_bounds.Y,
+                                                       layout);
                                }
-                               
+
                        }
-       
+
                        if (DisplayTags) {
                                Tag [] tags = photo.Tags;
                                Gdk.Rectangle tag_bounds;
-       
+
                                tag_bounds.X = bounds.X + (bounds.Width  + 
tag_icon_hspacing - tags.Length * (tag_icon_size + tag_icon_hspacing)) / 2;
                                tag_bounds.Y = bounds.Y + bounds.Height - 
cell_border_width - tag_icon_size + tag_icon_vspacing;
                                tag_bounds.Width = tag_icon_size;
                                tag_bounds.Height = tag_icon_size;
-                               
+
                                foreach (Tag t in tags) {
                                        if (t == null)
                                                continue;
-       
+
                                        Pixbuf icon = t.Icon;
-       
-                                       Tag tag_iter = t.Category;
-                                       while (icon == null && tag_iter != 
Core.Database.Tags.RootCategory && tag_iter != null) {
-                                           icon = tag_iter.Icon;
-                                           tag_iter = tag_iter.Category;
-                                       }
-                       
-                                       if (icon == null)
-                                           continue;
-                       
+
+                                       Tag tag_iter = t.Category;
+                                       while (icon == null && tag_iter != 
Core.Database.Tags.RootCategory && tag_iter != null) {
+                                               icon = tag_iter.Icon;
+                                               tag_iter = tag_iter.Category;
+                                       }
+
+                                       if (icon == null)
+                                               continue;
+
                                        if (tag_bounds.Intersect (area, out 
region)) {
                                                Pixbuf scaled_icon;
                                                if (icon.Width == 
tag_bounds.Width) {
                                                        scaled_icon = icon;
                                                } else {
-                                                       scaled_icon = 
icon.ScaleSimple (tag_bounds.Width, 
-                                                                               
        tag_bounds.Height, 
-                                                                               
        InterpType.Bilinear);
+                                                       scaled_icon = 
icon.ScaleSimple (tag_bounds.Width,
+                                                                       
tag_bounds.Height,
+                                                                       
InterpType.Bilinear);
                                                }
-                                               
+
                                                scaled_icon.RenderToDrawable 
(BinWindow, Style.WhiteGC,
-                                                                             
region.X - tag_bounds.X, 
-                                                                             
region.Y - tag_bounds.Y, 
-                                                                             
region.X, region.Y, 
-                                                                             
region.Width, region.Height,
-                                                                             
RgbDither.None, region.X, region.Y);
+                                                               region.X - 
tag_bounds.X,
+                                                               region.Y - 
tag_bounds.Y,
+                                                               region.X, 
region.Y,
+                                                               region.Width, 
region.Height,
+                                                               RgbDither.None, 
region.X, region.Y);
                                                if (scaled_icon != icon) {
                                                        scaled_icon.Dispose ();
                                                }
@@ -997,48 +999,48 @@
                                        tag_bounds.X += tag_bounds.Width + 
tag_icon_hspacing;
                                }
                        }
-       
+
                }
-       
+
                private void DrawAllCells (Gdk.Rectangle area)
                {
                        if (cell_width == 0 || cell_height == 0)
                                return;
-                               
+
                        int start_cell_column = Math.Max ((area.X - 
BORDER_SIZE) / cell_width, 0);
                        int start_cell_row = Math.Max ((area.Y - BORDER_SIZE) / 
cell_height, 0);
                        int start_cell_num = start_cell_column + start_cell_row 
* cells_per_row;
-       
+
                        int start_cell_x, cell_y;
                        GetCellPosition (start_cell_num, out start_cell_x, out 
cell_y);
-       
+
                        int end_cell_column = Math.Max ((area.X + area.Width - 
BORDER_SIZE) / cell_width, 0);
                        int end_cell_row = Math.Max ((area.Y + area.Height - 
BORDER_SIZE) / cell_height, 0);
-       
+
                        int num_rows = end_cell_row - start_cell_row + 1;
                        int num_cols = Math.Min (end_cell_column - 
start_cell_column + 1,
-                                                cells_per_row - 
start_cell_column);
-       
+                                       cells_per_row - start_cell_column);
+
                        int i, cell_num;
                        //Preload (area, false);
-       
+
                        for (i = 0, cell_num = start_cell_num;
-                            i < num_rows && cell_num < collection.Count;
-                            i ++) {
+                               i < num_rows && cell_num < collection.Count;
+                       i ++) {
                                int cell_x = start_cell_x;
-       
+
                                //Console.WriteLine ("Drawing row {0}", 
start_cell_row + i);
                                for (int j = 0; j < num_cols && cell_num + j < 
collection.Count; j ++) {
                                        DrawCell (cell_num + j, area);
                                        cell_x += cell_width;
                                }
-       
+
                                cell_y += cell_height;
                                cell_num += cells_per_row;
                        }
-       
+
                }
-       
+
                private void GetCellPosition (int cell_num, out int x, out int 
y)
                {
                        if (cells_per_row == 0) {
@@ -1046,145 +1048,145 @@
                                y = 0;
                                return;
                        }
-                               
+
                        int row = cell_num / cells_per_row;
                        int col = cell_num % cells_per_row;
-       
+
                        x = col * cell_width + BORDER_SIZE;
                        y = row * cell_height + BORDER_SIZE;
                }
-       
-       
+
+
                // Scrolling.  We do this in an idle loop so we can catch up if 
the user scrolls quickly.
-       
+
                private void Scroll ()
                {
                        int ystep = (int)(Vadjustment.Value - y_offset);
                        int xstep = (int)(Hadjustment.Value - x_offset);
-                       
+
                        if (xstep > 0)
                                xstep = Math.Max (xstep, Allocation.Width);
-                       else 
+                       else
                                xstep = Math.Min (xstep, -Allocation.Width);
-       
+
                        if (ystep > 0)
                                ystep = Math.Max (ystep, Allocation.Height);
-                       else 
+                       else
                                ystep = Math.Min (ystep, -Allocation.Height);
-       
+
                        Gdk.Rectangle area;
-       
+
                        Gdk.Region offscreen = new Gdk.Region ();
                        /*
-                       System.Console.WriteLine ("step ({0}, {1}) allocation 
({2},{3},{4},{5})", 
-                                                 xstep, ystep, 
Hadjustment.Value, Vadjustment.Value, 
-                                                 Allocation.Width, 
Allocation.Height);
+                       System.Console.WriteLine ("step ({0}, {1}) allocation 
({2},{3},{4},{5})",
+                                       xstep, ystep, Hadjustment.Value, 
Vadjustment.Value,
+                                       Allocation.Width, Allocation.Height);
                        */
-                       /*              
-                       area = new Gdk.Rectangle (Math.Max ((int) 
(Hadjustment.Value + 4 * xstep), 0),  
-                                                 Math.Max ((int) 
(Vadjustment.Value + 4 * ystep), 0),
-                                                 Allocation.Width,
-                                                 Allocation.Height);
+                       /*
+                       area = new Gdk.Rectangle (Math.Max ((int) 
(Hadjustment.Value + 4 * xstep), 0),
+                                       Math.Max ((int) (Vadjustment.Value + 4 
* ystep), 0),
+                                       Allocation.Width,
+                                       Allocation.Height);
                        offscreen.UnionWithRect (area);
-                       area = new Gdk.Rectangle (Math.Max ((int) 
(Hadjustment.Value + 3 * xstep), 0),  
-                                                 Math.Max ((int) 
(Vadjustment.Value + 3 * ystep), 0),
-                                                 Allocation.Width,
-                                                 Allocation.Height);
+                       area = new Gdk.Rectangle (Math.Max ((int) 
(Hadjustment.Value + 3 * xstep), 0),
+                                       Math.Max ((int) (Vadjustment.Value + 3 
* ystep), 0),
+                                       Allocation.Width,
+                                       Allocation.Height);
                        offscreen.UnionWithRect (area);
                        */
-                       area = new Gdk.Rectangle (Math.Max ((int) 
(Hadjustment.Value + 2 * xstep), 0),  
-                                                 Math.Max ((int) 
(Vadjustment.Value + 2 * ystep), 0),
-                                                 Allocation.Width,
-                                                 Allocation.Height);
+                       area = new Gdk.Rectangle (Math.Max ((int) 
(Hadjustment.Value + 2 * xstep), 0),
+                                       Math.Max ((int) (Vadjustment.Value + 2 
* ystep), 0),
+                                       Allocation.Width,
+                                       Allocation.Height);
                        offscreen.UnionWithRect (area);
-                       area = new Gdk.Rectangle (Math.Max ((int) 
(Hadjustment.Value + xstep), 0),  
-                                                 Math.Max ((int) 
(Vadjustment.Value + ystep), 0),
-                                                 Allocation.Width,
-                                                 Allocation.Height);           
+                       area = new Gdk.Rectangle (Math.Max ((int) 
(Hadjustment.Value + xstep), 0),
+                                       Math.Max ((int) (Vadjustment.Value + 
ystep), 0),
+                                       Allocation.Width,
+                                       Allocation.Height);
                        offscreen.UnionWithRect (area);
-                       area = new Gdk.Rectangle ((int) Hadjustment.Value, 
-                                                 (int) Vadjustment.Value,
-                                                 Allocation.Width,
-                                                 Allocation.Height);
-       
+                       area = new Gdk.Rectangle ((int) Hadjustment.Value,
+                                       (int) Vadjustment.Value,
+                                       Allocation.Width,
+                                       Allocation.Height);
+
                        // always load the onscreen area last to make sure it
                        // is first in the loading
                        Gdk.Region onscreen = Gdk.Region.Rectangle (area);
                        offscreen.Subtract (onscreen);
-       
+
                        PreloadRegion (offscreen, ystep);
                        Preload (area, false);
-       
+
                        y_offset = (int) Vadjustment.Value;
                        x_offset = (int) Hadjustment.Value;
                }
-               
-               private void PreloadRegion (Gdk.Region region, int step)
+
+               private void PreloadRegion (Gdk.Region region, int step)
                {
                        Gdk.Rectangle [] rects = region.GetRectangles ();
-                       
+
                        if (step < 0)
                                System.Array.Reverse (rects);
-       
+
                        foreach (Gdk.Rectangle preload in rects) {
                                Preload (preload, false);
                        }
                }
-       
+
                private void Preload (Gdk.Rectangle area, bool back)
                {
                        if (cells_per_row ==0)
                                return;
-       
+
                        int start_cell_column = Math.Max ((area.X - 
BORDER_SIZE) / cell_width, 0);
                        int start_cell_row = Math.Max ((area.Y - BORDER_SIZE) / 
cell_height, 0);
                        int start_cell_num = start_cell_column + start_cell_row 
* cells_per_row;
-       
+
                        int end_cell_column = Math.Max ((area.X + area.Width - 
BORDER_SIZE) / cell_width, 0);
                        int end_cell_row = Math.Max ((area.Y + area.Height - 
BORDER_SIZE) / cell_height, 0);
-       
+
                        int i;
-       
+
                        FSpot.IBrowsableItem photo;
                        FSpot.PixbufCache.CacheEntry entry;
                        string thumbnail_path;
-       
+
                        // Preload the cache with images aroud the expose area
                        // FIXME the preload need to be tuned to the Cache size 
but this is a resonable start
-                       
+
                        int cols = end_cell_column - start_cell_column + 1;
                        int rows = end_cell_row - start_cell_row + 1;
                        int len = rows * cols;
                        int scell = start_cell_num;
                        int ecell = scell + len;
                        if (scell > collection.Count - len) {
-                               ecell = collection.Count;
+                               ecell = collection.Count;
                                scell = System.Math.Max (0, scell - len);
                        } else
                                ecell = scell + len;
-                       
+
                        int mid = (ecell - scell) / 2;
                        for (i = 0; i < mid; i++)
-                       {
+                               {
                                int cell = back ? ecell - i - 1 : scell + mid + 
i;
-       
+
                                photo = collection [cell];
                                thumbnail_path = 
FSpot.ThumbnailGenerator.ThumbnailPath (photo.DefaultVersionUri);
-                               
+
                                entry = cache.Lookup (thumbnail_path);
                                if (entry == null)
                                        cache.Request (thumbnail_path, cell, 
ThumbnailWidth, ThumbnailHeight);
-       
+
                                cell = back ? scell + i : scell + mid - i - 1;
                                photo = collection [cell];
                                thumbnail_path = 
FSpot.ThumbnailGenerator.ThumbnailPath (photo.DefaultVersionUri);
-                               
+
                                entry = cache.Lookup (thumbnail_path);
                                if (entry == null)
                                        cache.Request (thumbnail_path, cell, 
ThumbnailWidth, ThumbnailHeight);
-                       } 
+                       }
                }
-       
+
                //
                // The throb interface
                //
@@ -1198,18 +1200,18 @@
                        throb_cell = cell_num;
                        if (throb_timer_id == 0)
                                throb_timer_id = GLib.Timeout.Add 
((39000/throb_state_max)/100,
-                                                                  new 
GLib.TimeoutHandler (HandleThrobTimer));
-       
+                                       new GLib.TimeoutHandler 
(HandleThrobTimer));
+
                        InvalidateCell (cell_num);
                }
-               
+
                private void CancelThrob ()
                {
                        if (throb_timer_id != 0)
                                GLib.Source.Remove (throb_timer_id);
                }
-       
-               private bool HandleThrobTimer () 
+
+               private bool HandleThrobTimer ()
                {
                        InvalidateCell (throb_cell);
                        if (throb_state++ < throb_state_max) {
@@ -1220,75 +1222,75 @@
                                return false;
                        }
                }
-       
-               public void ScrollTo (int cell_num)
-               {
+
+               public void ScrollTo (int cell_num)
+               {
                        ScrollTo (cell_num, true);
                }
-       
+
                public void ScrollTo (int cell_num, bool center)
                {
                        if (!IsRealized)
                                return;
-       
+
                        Adjustment adjustment = Vadjustment;
                        int x;
                        int y;
-       
+
                        GetCellPosition (cell_num, out x, out y);
-       
+
                        if (y + cell_height > adjustment.Upper)
                                UpdateLayout ();
-       
+
                        if (center)
                                adjustment.Value = y + cell_height / 2 - 
adjustment.PageSize / 2;
                        else
                                adjustment.Value = y;
-                       
+
                        adjustment.ChangeValue ();
-       
+
                }
-               
+
                public void ZoomIn ()
                {
                        ThumbnailWidth = (int) (ThumbnailWidth * ZOOM_FACTOR);
                }
-               
+
                public void ZoomOut ()
                {
                        ThumbnailWidth = (int) (ThumbnailWidth / ZOOM_FACTOR);
                }
-       
+
                // Event handlers.
-       
+
                [GLib.ConnectBefore]
                private void HandleAdjustmentValueChanged (object sender, 
EventArgs args)
                {
                        Scroll ();
                }
-       
+
                private void HandlePixbufLoaded (FSpot.PixbufCache cache, 
FSpot.PixbufCache.CacheEntry entry)
                {
                        Gdk.Pixbuf result = entry.ShallowCopyPixbuf ();
                        int order = (int) entry.Data;
-       
+
                        if (order >= 0 && order < collection.Count) {
                                System.Uri uri = collection 
[order].DefaultVersionUri;
-       
+
                                if (result == null && !System.IO.File.Exists 
(FSpot.ThumbnailGenerator.ThumbnailPath (uri)))
                                        
FSpot.ThumbnailGenerator.Default.Request (uri, 0, 256, 256);
-                               
+
                                if (result == null)
                                        return;
-                               
+
                                if (!FSpot.PhotoLoader.ThumbnailIsValid (uri, 
result))
                                        
FSpot.ThumbnailGenerator.Default.Request (uri, 0, 256, 256);
                        }
-                               
+
                        if (result == null)
                                return;
-       
-                       // We have to do the scaling here rather than on load 
because we need to preserve the 
+
+                       // We have to do the scaling here rather than on load 
because we need to preserve the
                        // Pixbuf option iformation to verify the thumbnail 
validity later
                        int width, height;
                        PixbufUtils.Fit (result, ThumbnailWidth, 
ThumbnailHeight, false, out width, out height);
@@ -1298,25 +1300,25 @@
                                result.Dispose ();
                                result = temp;
                        } else if (result.Width < ThumbnailWidth && 
result.Height < ThumbnailHeight) {
-                               // FIXME this is a workaround to handle images 
whose actual size is smaller than 
+                               // FIXME this is a workaround to handle images 
whose actual size is smaller than
                                // the thumbnail size, it needs to be fixed at 
a different level.
                                Gdk.Pixbuf temp = new Gdk.Pixbuf 
(Gdk.Colorspace.Rgb, true, 8, ThumbnailWidth, ThumbnailHeight);
                                temp.Fill (0x00000000);
-                               result.CopyArea (0, 0, 
-                                                result.Width, result.Height, 
-                                                temp, 
-                                                (temp.Width - result.Width)/ 2,
-                                                temp.Height - result.Height);
-       
+                               result.CopyArea (0, 0,
+                                               result.Width, result.Height,
+                                               temp,
+                                               (temp.Width - result.Width)/ 2,
+                                               temp.Height - result.Height);
+
                                result.Dispose ();
                                result = temp;
                        }
-       
+
                        cache.Update (entry, result);
                        InvalidateCell (order);
                }
-               
-               public Gdk.Rectangle CellBounds (int cell) 
+
+               public Gdk.Rectangle CellBounds (int cell)
                {
                        Rectangle bounds;
                        GetCellPosition (cell, out bounds.X, out bounds.Y);
@@ -1324,70 +1326,70 @@
                        bounds.Height = cell_height;
                        return bounds;
                }
-       
-               public void InvalidateCell (int order) 
-               {               
+
+               public void InvalidateCell (int order)
+               {
                        Rectangle cell_area = CellBounds (order);
                        // FIXME where are we computing the bounds incorrectly
                        cell_area.Width -= 1;
                        cell_area.Height -= 1;
-                       Gdk.Rectangle visible = new Gdk.Rectangle 
((int)Hadjustment.Value, 
-                                                                  
(int)Vadjustment.Value, 
-                                                                  
Allocation.Width, 
-                                                                  
Allocation.Height);
-       
+                       Gdk.Rectangle visible = new Gdk.Rectangle 
((int)Hadjustment.Value,
+                                       (int)Vadjustment.Value,
+                                       Allocation.Width,
+                                       Allocation.Height);
+
                        if (BinWindow != null && cell_area.Intersect (visible, 
out cell_area))
                                BinWindow.InvalidateRect (cell_area, false);
                }
-                               
+
                private void HandleScrollAdjustmentsSet (object sender, 
ScrollAdjustmentsSetArgs args)
                {
                        if (args.Vadjustment != null)
                                args.Vadjustment.ValueChanged += new 
EventHandler (HandleAdjustmentValueChanged);
                }
-       
-               private void HandleScrollEvent(object sender, ScrollEventArgs 
args) 
+
+               private void HandleScrollEvent(object sender, ScrollEventArgs 
args)
                {
                        // Activated only by Control + 
ScrollWheelUp/ScrollWheelDown
                        if (ModifierType.ControlMask != (args.Event.State & 
ModifierType.ControlMask))
                                return;
-                       
+
                        if (args.Event.Direction == ScrollDirection.Up) {
                                ZoomIn ();
                                // stop event from propagating.
-                               args.RetVal = true;                     
+                               args.RetVal = true;
                        } else if (args.Event.Direction == ScrollDirection.Down 
) {
                                ZoomOut ();
                                args.RetVal = true;
                        }
                }
-       
-               private void SetColors () 
+
+               private void SetColors ()
                {
                        if (IsRealized) {
                                BinWindow.Background = Style.BaseColors 
[(int)State];
                                GdkWindow.Background = Style.BaseColors 
[(int)State];
                        }
                }
-       
+
                protected override void OnRealized ()
                {
                        base.OnRealized ();
                        SetColors ();
                }
-       
+
                protected override void OnStateChanged (StateType previous)
                {
                        base.OnStateChanged (previous);
                        SetColors ();
                }
-               
+
                protected override void OnStyleSet (Style previous)
                {
                        base.OnStyleSet (previous);
                        SetColors ();
                }
-       
+
                protected override void OnSizeAllocated (Gdk.Rectangle 
allocation)
                {
                        scroll_value = (Vadjustment.Value)/ (Vadjustment.Upper);
@@ -1396,7 +1398,7 @@
                        UpdateLayout (allocation);
                        base.OnSizeAllocated (allocation);
                }
-       
+
                protected override bool OnExposeEvent (Gdk.EventExpose args)
                {
                        foreach (Rectangle area in args.Region.GetRectangles 
()) {
@@ -1404,29 +1406,29 @@
                        }
                        return base.OnExposeEvent (args);
                }
-       
-               private void HandleButtonPressEvent (object obj, 
ButtonPressEventArgs args)
-               {
+
+               private void HandleButtonPressEvent (object obj, 
ButtonPressEventArgs args)
+               {
                        int cell_num = CellAtPosition ((int) args.Event.X, 
(int) args.Event.Y, false);
-       
+
                        args.RetVal = true;
-       
+
                        if (cell_num < 0) {
                                args.RetVal = false;
                                selection.Clear ();
                                return;
                        }
-       
+
                        switch (args.Event.Type) {
                        case EventType.TwoButtonPress:
                                if (args.Event.Button != 1
-                                   || (args.Event.State &  
(ModifierType.ControlMask
-                                                            | 
ModifierType.ShiftMask)) != 0)
-                                       return;
+                                       || (args.Event.State &  
(ModifierType.ControlMask
+                               | ModifierType.ShiftMask)) != 0)
+                               return;
                                if (DoubleClicked != null)
                                        DoubleClicked (this, cell_num);
                                return;
-       
+
                        case EventType.ButtonPress:
                                GrabFocus ();
                                if ((args.Event.State & 
ModifierType.ControlMask) != 0) {
@@ -1437,64 +1439,64 @@
                                        selection.Clear ();
                                        selection.Add (cell_num);
                                }
-       
+
                                if (args.Event.Button == 3){
                                        ContextMenu (args, cell_num);
                                        return;
                                }
-                               
+
                                if (args.Event.Button != 1)
                                        return;
-       
+
                                FocusCell = cell_num;
                                return;
-       
+
                        default:
                                args.RetVal = false;
                                return;
                        }
                }
-       
+
                protected virtual void ContextMenu (ButtonPressEventArgs args, 
int cell_num)
                {
                }
-               
+
                private void HandleButtonReleaseEvent (object sender, 
ButtonReleaseEventArgs args)
                {
                        int cell_num = CellAtPosition ((int) args.Event.X, 
(int) args.Event.Y);
-       
+
                        args.RetVal = true;
-       
+
                        if (cell_num < 0) {
                                args.RetVal = false;
                                return;
                        }
-                       
+
                        switch (args.Event.Type) {
-                               case EventType.ButtonRelease:
-                                       if ((args.Event.State & 
ModifierType.ControlMask) == 0 &&
-                                           (args.Event.State & 
ModifierType.ShiftMask  ) == 0 &&
+                       case EventType.ButtonRelease:
+                               if ((args.Event.State & 
ModifierType.ControlMask) == 0 &&
+                                               (args.Event.State & 
ModifierType.ShiftMask  ) == 0 &&
                                                (selection.Count > 1)) {
-                                               selection.Clear ();
-                                               selection.Add (FocusCell);
-                                       }
-               
-                                       break;
-       
-                               default:
-                                       args.RetVal = false;
-                                       break;
+                                       selection.Clear ();
+                                       selection.Add (FocusCell);
+                               }
+
+                               break;
+
+                       default:
+                               args.RetVal = false;
+                               break;
                        }
-                                               
+
                }
-       
+
                private void HandleKeyPressEvent (object sender, 
KeyPressEventArgs args)
                {
                        int focus_old;
                        args.RetVal = true;
                        bool shift = ModifierType.ShiftMask == 
(args.Event.State & ModifierType.ShiftMask);
                        bool control = ModifierType.ControlMask == 
(args.Event.State & ModifierType.ControlMask);
-       
+
                        focus_old = FocusCell;
                        switch (args.Event.Key) {
                        case Gdk.Key.Down:
@@ -1527,7 +1529,7 @@
                                FocusCell = 0;
                                break;
                        case Gdk.Key.End:
-                               FocusCell = collection.Count - 1; 
+                               FocusCell = collection.Count - 1;
                                break;
                        case Gdk.Key.space:
                                ToggleCell (FocusCell);
@@ -1537,16 +1539,16 @@
                                        break;
                                DoubleClicked (this, FocusCell);
                                break;
-                       default:        
+                       default:
                                args.RetVal = false;
-                               return;         
+                               return;
                        }
-                       
+
                        if (FocusCell == focus_old) {
                                args.RetVal = false;
                                return;
                        }
-       
+
                        if (shift) {
                                if (focus_old != FocusCell && 
selection.Contains (focus_old) && selection.Contains (FocusCell))
                                        selection.Remove (FocusCell, focus_old);
@@ -1555,11 +1557,11 @@
                        } else if (!control) {
                                selection.Clear ();
                                selection.Add (FocusCell);
-                       } 
-               
+                       }
+
                        ScrollTo (FocusCell);
                }
-       
+
                private void HandleDestroyed (object sender, System.EventArgs 
args)
                {
                        cache.OnPixbufLoaded -= HandlePixbufLoaded;
_______________________________________________
SVN-commits-list mailing list (read only)
http://mail.gnome.org/mailman/listinfo/svn-commits-list

Want to limit the commits to a few modules? Go to above URL, log in to edit 
your options and select the modules ('topics') you want.
Module maintainer? It is possible to set the reply-to to your development 
mailing list. Email [EMAIL PROTECTED] if interested.

Reply via email to