[california] Press F2 to rename calendar: Closes bug #729306



commit 32217b3bb2080839b9a5bf97afc1f9ae9e4cc040
Author: Jim Nelson <jim yorba org>
Date:   Thu May 1 13:50:44 2014 -0700

    Press F2 to rename calendar: Closes bug #729306

 src/manager/manager-calendar-list-item.vala |   14 ++++++++++++++
 src/manager/manager-window.vala             |   18 +++++++++++++++++-
 2 files changed, 31 insertions(+), 1 deletions(-)
---
diff --git a/src/manager/manager-calendar-list-item.vala b/src/manager/manager-calendar-list-item.vala
index fd62bde..027e7b7 100644
--- a/src/manager/manager-calendar-list-item.vala
+++ b/src/manager/manager-calendar-list-item.vala
@@ -78,6 +78,16 @@ internal class CalendarListItem : Gtk.Grid, Toolkit.MutableWidget {
         return true;
     }
     
+    /**
+     * Allow for the user to rename the title of the { link source}.
+     *
+     * This presents a { link Toolkit.EditableLabel} for the user to enter the new name.
+     */
+    public void rename() {
+        if (editable_label == null)
+            activate_editable_label();
+    }
+    
     private bool source_to_color(Binding binding, Value source_value, ref Value target_value) {
         bool used_default;
         target_value = Gfx.rgb_string_to_rgba(source.color, Gfx.RGBA_BLACK, out used_default);
@@ -114,6 +124,10 @@ internal class CalendarListItem : Gtk.Grid, Toolkit.MutableWidget {
         if (editable_label != null || !is_selected)
             return false;
         
+        // only interest in primary button clicks
+        if (event.button != 1)
+            return false;
+        
         activate_editable_label();
         
         // don't propagate
diff --git a/src/manager/manager-window.vala b/src/manager/manager-window.vala
index ce26199..64bf98c 100644
--- a/src/manager/manager-window.vala
+++ b/src/manager/manager-window.vala
@@ -13,10 +13,12 @@ namespace California.Manager {
 public class Window : Toolkit.DeckWindow {
     private static Manager.Window? instance = null;
     
+    private CalendarList calendar_list = new CalendarList();
+    
     private Window(Gtk.Window? parent) {
         base (parent, null);
         
-        deck.add_cards(iterate<Toolkit.Card>(new CalendarList()).to_array_list());
+        deck.add_cards(iterate<Toolkit.Card>(calendar_list).to_array_list());
     }
     
     public static void display(Gtk.Window? parent) {
@@ -34,6 +36,20 @@ public class Window : Toolkit.DeckWindow {
         
         instance = null;
     }
+    
+    public override bool key_release_event(Gdk.EventKey event) {
+        // F2 with no modifiers means rename currenly selected item
+        if (event.keyval != Gdk.Key.F2 || event.state != 0)
+            return base.key_release_event(event);
+        
+        if (calendar_list.selected == null)
+            return base.key_release_event(event);
+        
+        calendar_list.selected.rename();
+        
+        // don't propagate
+        return true;
+    }
 }
 
 }


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