[Xfce4-commits] <postler:master> Control + Return should open message in a new window

Christian Dywan noreply at xfce.org
Fri Nov 26 01:08:06 CET 2010


Updating branch refs/heads/master
         to e2b6f487ce4ea8b30235b9eac2ab1fa96785ea7e (commit)
       from 8cb9d5db7e346423c8d382b0b9695f8b2676b5ea (commit)

commit e2b6f487ce4ea8b30235b9eac2ab1fa96785ea7e
Author: Christian Dywan <christian at twotoasts.de>
Date:   Fri Nov 26 01:08:05 2010 +0100

    Control + Return should open message in a new window

 postler/postler-messages.vala |   53 +++++++++++++++++++++++++++++++----------
 1 files changed, 40 insertions(+), 13 deletions(-)

diff --git a/postler/postler-messages.vala b/postler/postler-messages.vala
index 1a3beb3..3f09be6 100644
--- a/postler/postler-messages.vala
+++ b/postler/postler-messages.vala
@@ -48,15 +48,13 @@ public class Postler.Messages : Gtk.TreeView {
     }
 
     void selection_changed () {
-        GLib.List<Gtk.TreePath> paths = get_selection ().get_selected_rows (null);
-        var path = paths.nth_data (0);
-        string location = null;
-        if (path != null) {
-            Gtk.TreeIter sort_iter;
-            if (sort.get_iter (out sort_iter, path))
-                sort.get (sort_iter, Columns.LOCATION, out location);
-        }
-        selected_location = location;
+        Gtk.TreeIter sort_iter;
+        if (get_selected_iter (out sort_iter)) {
+            string location;
+            sort.get (sort_iter, Columns.LOCATION, out location);
+            selected_location = location;
+        } else
+            selected_location = null;
     }
 
     static string escape_text (string text) {
@@ -264,6 +262,15 @@ public class Postler.Messages : Gtk.TreeView {
             Gdk.keyval_from_name ("KP_Enter"), 0,
                 "content-display", 0);
         Gtk.BindingEntry.add_signal (binding_set,
+            Gdk.keyval_from_name ("Return"), Gdk.ModifierType.CONTROL_MASK,
+                "content-display-window", 0);
+        Gtk.BindingEntry.add_signal (binding_set,
+            Gdk.keyval_from_name ("ISO_Enter"), Gdk.ModifierType.CONTROL_MASK,
+                "content-display-window", 0);
+        Gtk.BindingEntry.add_signal (binding_set,
+            Gdk.keyval_from_name ("KP_Enter"), Gdk.ModifierType.CONTROL_MASK,
+                "content-display-window", 0);
+        Gtk.BindingEntry.add_signal (binding_set,
             Gdk.keyval_from_name ("space"), 0,
                 "content-page-down", 0);
         Gtk.BindingEntry.add_signal (binding_set,
@@ -271,6 +278,7 @@ public class Postler.Messages : Gtk.TreeView {
                 "content-page-up", 0);
         Gtk.BindingEntry.add_signal (binding_set,
             Gdk.keyval_from_name ("Delete"), 0, "delete", 0);
+        content_display_window.connect (content_new_window);
     }
 
     [Signal (action=true)]
@@ -278,6 +286,18 @@ public class Postler.Messages : Gtk.TreeView {
         select_cursor_row (false);
     }
     [Signal (action=true)]
+    public signal void content_display_window ();
+    /* Vala fails to parse out parameters in virtual signals */
+    void content_new_window () {
+        Gtk.TreeIter sort_iter;
+        if (get_selected_iter (out sort_iter)) {
+            string location;
+            sort.get (sort_iter, Columns.LOCATION, out location);
+            mark_message_read (sort_iter, ref location);
+            Postler.App.spawn_module ("content", location);
+        }
+    }
+    [Signal (action=true)]
     public virtual signal void content_page_down () {
         content.move_cursor (Gtk.MovementStep.PAGES, 1);
     }
@@ -774,6 +794,15 @@ public class Postler.Messages : Gtk.TreeView {
         }
     }
 
+    bool get_selected_iter (out Gtk.TreeIter sort_iter) {
+        GLib.List<Gtk.TreePath> paths = get_selection ().get_selected_rows (null);
+        sort_iter = Gtk.TreeIter ();
+        var path = paths.nth_data (0);
+        if (path != null && sort.get_iter (out sort_iter, path))
+            return true;
+        return false;
+    }
+
     bool get_message_iter (string location, out Gtk.TreeIter iter) {
         Gtk.TreeIter message_iter;
         if (!store.iter_children (out message_iter, null))
@@ -953,10 +982,8 @@ public class Postler.Messages : Gtk.TreeView {
 
     public override bool button_press_event (Gdk.EventButton event) {
         if (event.type == Gdk.EventType.2BUTTON_PRESS) {
-            GLib.List<Gtk.TreePath> paths = get_selection ().get_selected_rows (null);
-            Gtk.TreeIter sort_iter = Gtk.TreeIter ();
-            var path = paths.nth_data (0);
-            if (path != null && sort.get_iter (out sort_iter, path)) {
+            Gtk.TreeIter sort_iter;
+            if (get_selected_iter (out sort_iter)) {
                 string location;
                 sort.get (sort_iter, Columns.LOCATION, out location);
                 mark_message_read (sort_iter, ref location);



More information about the Xfce4-commits mailing list