[gtk+] Add an 'Always on Top' item to the csd window menu



commit 8f69721ed463e1fb484848205d78ff1e6c042c42
Author: Matthias Clasen <mclasen redhat com>
Date:   Fri Aug 23 22:46:04 2013 -0400

    Add an 'Always on Top' item to the csd window menu
    
    We want to make the csd window menu as similar as possible to the
    mutter window menu.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=706323

 gtk/gtkwindow.c |   28 ++++++++++++++++++++++------
 1 files changed, 22 insertions(+), 6 deletions(-)
---
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index fec88e8..aeb1358 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -7879,6 +7879,15 @@ maximize_window_clicked (GtkMenuItem *menuitem,
 }
 
 static void
+ontop_window_clicked (GtkMenuItem *menuitem,
+                      gpointer     user_data)
+{
+  GtkWindow *window = (GtkWindow *)user_data;
+
+  gtk_window_set_keep_above (window, !window->priv->above_initially);
+}
+
+static void
 close_window_clicked (GtkMenuItem *menuitem,
                       gpointer     user_data)
 {
@@ -7909,8 +7918,7 @@ gtk_window_do_popup (GtkWindow      *window,
   gtk_widget_show (menuitem);
   if (priv->gdk_type_hint != GDK_WINDOW_TYPE_HINT_NORMAL)
     gtk_widget_set_sensitive (menuitem, FALSE);
-  g_signal_connect (G_OBJECT (menuitem),
-                    "activate",
+  g_signal_connect (G_OBJECT (menuitem), "activate",
                     G_CALLBACK (minimize_window_clicked), window);
   gtk_menu_shell_append (GTK_MENU_SHELL (priv->popup_menu), menuitem);
 
@@ -7919,11 +7927,20 @@ gtk_window_do_popup (GtkWindow      *window,
   if (!priv->resizable ||
       priv->gdk_type_hint != GDK_WINDOW_TYPE_HINT_NORMAL)
     gtk_widget_set_sensitive (menuitem, FALSE);
-  g_signal_connect (G_OBJECT (menuitem),
-                    "activate",
+  g_signal_connect (G_OBJECT (menuitem), "activate",
                     G_CALLBACK (maximize_window_clicked), window);
   gtk_menu_shell_append (GTK_MENU_SHELL (priv->popup_menu), menuitem);
 
+  menuitem = gtk_check_menu_item_new_with_label (_("Always on Top"));
+  gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem),
+                                  priv->above_initially);
+  if (gtk_window_get_maximized (window))
+    gtk_widget_set_sensitive (menuitem, FALSE);
+  gtk_widget_show (menuitem);
+  g_signal_connect (G_OBJECT (menuitem), "activate",
+                    G_CALLBACK (ontop_window_clicked), window);
+  gtk_menu_shell_append (GTK_MENU_SHELL (priv->popup_menu), menuitem);
+
   menuitem = gtk_separator_menu_item_new ();
   gtk_widget_show (menuitem);
   gtk_menu_shell_append (GTK_MENU_SHELL (priv->popup_menu), menuitem);
@@ -7932,8 +7949,7 @@ gtk_window_do_popup (GtkWindow      *window,
   gtk_widget_show (menuitem);
   if (!priv->deletable)
     gtk_widget_set_sensitive (menuitem, FALSE);
-  g_signal_connect (G_OBJECT (menuitem),
-                    "activate",
+  g_signal_connect (G_OBJECT (menuitem), "activate",
                     G_CALLBACK (close_window_clicked), window);
   gtk_menu_shell_append (GTK_MENU_SHELL (priv->popup_menu), menuitem);
 


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