]> spindle.queued.net Git - midori/commitdiff
Allow cancelling the History List with Escape
authorAndré Stösel <andre@stoesel.de>
Tue, 3 May 2011 18:24:39 +0000 (20:24 +0200)
committerChristian Dywan <christian@twotoasts.de>
Tue, 3 May 2011 18:42:59 +0000 (20:42 +0200)
Just like Alt+Tab.

extensions/history-list.vala

index eb3762782302b92caf5017fcdaf4e0826f96eedd..acacae11b0f43c103ce0ef7f6d3d3e1ad2f29777 100644 (file)
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2010 André Stösel <andre@stoesel.de>
+   Copyright (C) 2010-2011 André Stösel <andre@stoesel.de>
 
    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
@@ -164,6 +164,7 @@ private class NewTabWindow : TabWindow {
 }
 
 private class HistoryList : Midori.Extension {
+    protected uint escKeyval;
     protected uint modifier_count;
     protected HistoryWindow? history_window;
     protected ulong[] tmp_sig_ids = new ulong[2];
@@ -176,13 +177,17 @@ private class HistoryList : Midori.Extension {
     public bool key_release (Gdk.EventKey event_key, Browser browser) {
         if (event_key.is_modifier > 0) {
             this.modifier_count--;
+        }
+        if (this.modifier_count == 0 || event_key.keyval == this.escKeyval) {
+            browser.disconnect (this.tmp_sig_ids[0]);
+            browser.disconnect (this.tmp_sig_ids[1]);
             if (this.modifier_count == 0) {
-                browser.disconnect (this.tmp_sig_ids[0]);
-                browser.disconnect (this.tmp_sig_ids[1]);
                 this.history_window.make_update ();
-                this.history_window.destroy ();
-                this.history_window = null;
+            } else {
+                this.modifier_count = 0;
             }
+            this.history_window.destroy ();
+            this.history_window = null;
         }
         return false;
     }
@@ -358,6 +363,9 @@ private class HistoryList : Midori.Extension {
         activate.connect (activated);
         deactivate.connect (deactivated);
     }
+    construct {
+        this.escKeyval = Gdk.keyval_from_name ("Escape");
+    }
 }
 
 public Midori.Extension extension_init () {