[mutter] Add keyboard shortcut for Always on Top



commit b7e3f627f1b4248ff477b5856e19ddb374ae034a
Author: Sindhu S <sindhus live in>
Date:   Thu Jul 25 00:25:23 2013 +0530

    Add keyboard shortcut for Always on Top

 src/core/keybindings.c              |   25 +++++++++++++++++++++++++
 src/meta/prefs.h                    |    2 ++
 src/org.gnome.mutter.gschema.xml.in |    8 ++++++++
 3 files changed, 35 insertions(+), 0 deletions(-)
---
diff --git a/src/core/keybindings.c b/src/core/keybindings.c
index 868a982..fd05734 100644
--- a/src/core/keybindings.c
+++ b/src/core/keybindings.c
@@ -3137,6 +3137,24 @@ handle_maximize_horizontally (MetaDisplay    *display,
     }
 }
 
+static void
+handle_always_on_top (MetaDisplay    *display,
+                              MetaScreen     *screen,
+                              MetaWindow     *window,
+                              XIDeviceEvent  *event,
+                              MetaKeyBinding *binding,
+                              gpointer        dummy)
+{
+  if (window->wm_state_above == FALSE)
+  {
+        meta_window_make_above (window);
+  }
+  else
+  {
+    meta_window_unmake_above (window);
+  }
+}
+
 /* Move a window to a corner; to_bottom/to_right are FALSE for the
  * top or left edge, or TRUE for the bottom/right edge.  xchange/ychange
  * are FALSE if that dimension is not to be changed, TRUE otherwise.
@@ -4651,6 +4669,13 @@ init_builtin_key_bindings (MetaDisplay *display)
                           handle_maximize_horizontally, 0);
 
   add_builtin_keybinding (display,
+                          "always-on-top",
+                          mutter_keybindings,
+                          META_KEY_BINDING_PER_WINDOW,
+                          META_KEYBINDING_ACTION_ALWAYS_ON_TOP,
+                          handle_always_on_top, 0);
+
+  add_builtin_keybinding (display,
                           "move-to-corner-nw",
                           common_keybindings,
                           META_KEY_BINDING_PER_WINDOW,
diff --git a/src/meta/prefs.h b/src/meta/prefs.h
index e772e75..14fd5c7 100644
--- a/src/meta/prefs.h
+++ b/src/meta/prefs.h
@@ -248,6 +248,7 @@ void     meta_prefs_set_ignore_request_hide_titlebar (gboolean whether);
  * @META_KEYBINDING_ACTION_LOWER: FILLME 
  * @META_KEYBINDING_ACTION_MAXIMIZE_VERTICALLY: FILLME 
  * @META_KEYBINDING_ACTION_MAXIMIZE_HORIZONTALLY: FILLME 
+ * @META_KEYBINDING_ACTION_ALWAYS_ON_TOP: FILLME 
  * @META_KEYBINDING_ACTION_MOVE_TO_CORNER_NW: FILLME 
  * @META_KEYBINDING_ACTION_MOVE_TO_CORNER_NE: FILLME 
  * @META_KEYBINDING_ACTION_MOVE_TO_CORNER_SW: FILLME 
@@ -339,6 +340,7 @@ typedef enum _MetaKeyBindingAction
   META_KEYBINDING_ACTION_RAISE,
   META_KEYBINDING_ACTION_LOWER,
   META_KEYBINDING_ACTION_MAXIMIZE_VERTICALLY,
+  META_KEYBINDING_ACTION_ALWAYS_ON_TOP,
   META_KEYBINDING_ACTION_MAXIMIZE_HORIZONTALLY,
   META_KEYBINDING_ACTION_MOVE_TO_CORNER_NW,
   META_KEYBINDING_ACTION_MOVE_TO_CORNER_NE,
diff --git a/src/org.gnome.mutter.gschema.xml.in b/src/org.gnome.mutter.gschema.xml.in
index 9d83cf3..5ef2b9a 100644
--- a/src/org.gnome.mutter.gschema.xml.in
+++ b/src/org.gnome.mutter.gschema.xml.in
@@ -93,6 +93,14 @@
       </_description>
     </key>
 
+    <key name="always-on-top" type="s">
+      <default>'Super_W'</default>
+      <_summary>Modifier to toggle Always on Top status on windows</_summary>
+      <_description>
+        This key will toggle the "Always on Top" status of a window.
+      </_description>
+    </key>
+
     <child name="keybindings" schema="org.gnome.mutter.keybindings"/>
 
   </schema>


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