[gtk/wip/exalm/window-headerbar: 1/6] header-bar: Stop showing application menu



commit 2240eb5c9925df26a8fd41b4ba8be003abf95e94
Author: Alexander Mikhaylenko <alexm gnome org>
Date:   Wed Apr 22 21:24:37 2020 +0500

    header-bar: Stop showing application menu
    
    The application menu isn't particular relevant anymore, and the support for
    showing fallback appmenu as a headerbar icon is one of the things tying
    GtkWindow to GtkHeaderBar.
    
    Remove support for "menu" window decoration element completely, update
    GtkHeaderBar docs.

 gtk/gtkapplicationwindow.c |  5 +---
 gtk/gtkheaderbar.c         | 58 +++-------------------------------------------
 gtk/gtkheaderbarprivate.h  |  1 -
 gtk/gtkwindow.c            | 11 ---------
 gtk/gtkwindowprivate.h     |  2 --
 5 files changed, 4 insertions(+), 73 deletions(-)
---
diff --git a/gtk/gtkapplicationwindow.c b/gtk/gtkapplicationwindow.c
index 63e31713cd..6695cc4b36 100644
--- a/gtk/gtkapplicationwindow.c
+++ b/gtk/gtkapplicationwindow.c
@@ -311,13 +311,10 @@ gtk_application_window_update_shell_shows_app_menu (GtkApplicationWindow *window
 {
   GtkApplicationWindowPrivate *priv = gtk_application_window_get_instance_private (window);
   gboolean shown_by_shell;
-  gboolean shown_by_titlebar;
 
   g_object_get (settings, "gtk-shell-shows-app-menu", &shown_by_shell, NULL);
 
-  shown_by_titlebar = _gtk_window_titlebar_shows_app_menu (GTK_WINDOW (window));
-
-  if (shown_by_shell || shown_by_titlebar)
+  if (shown_by_shell)
     {
       /* the shell shows it, so don't show it locally */
       if (g_menu_model_get_n_items (G_MENU_MODEL (priv->app_menu_section)) != 0)
diff --git a/gtk/gtkheaderbar.c b/gtk/gtkheaderbar.c
index b9a1495233..2280e77468 100644
--- a/gtk/gtkheaderbar.c
+++ b/gtk/gtkheaderbar.c
@@ -29,7 +29,6 @@
 #include "gtkimage.h"
 #include "gtkintl.h"
 #include "gtklabel.h"
-#include "gtkmenubutton.h"
 #include "gtkprivate.h"
 #include "gtkseparator.h"
 #include "gtksizerequest.h"
@@ -37,7 +36,6 @@
 #include "gtkwidgetprivate.h"
 #include "gtkwindowprivate.h"
 #include "gtknative.h"
-#include "gtkmenubuttonprivate.h"
 
 #include "a11y/gtkcontaineraccessible.h"
 
@@ -72,7 +70,6 @@
  * ├── box.start
  * │   ╰── box
  * │       ├── [image.titlebutton.icon]
- * │       ├── [menubutton.titlebutton.menu]
  * │       ├── [button.titlebutton.minimize]
  * │       ├── [button.titlebutton.maximize]
  * │       ╰── [button.titlebutton.close]
@@ -132,8 +129,6 @@ struct _GtkHeaderBarPrivate
   GtkWidget *titlebar_icon;
 
   GdkSurfaceState state;
-
-  guint shows_app_menu : 1;
 };
 
 enum {
@@ -238,10 +233,7 @@ _gtk_header_bar_update_window_icon (GtkHeaderBar *bar,
     return FALSE;
 
   scale = gtk_widget_get_scale_factor (priv->titlebar_icon);
-  if (GTK_IS_BUTTON (gtk_widget_get_parent (priv->titlebar_icon)))
-    paintable = gtk_window_get_icon_for_size (window, 16 * scale);
-  else
-    paintable = gtk_window_get_icon_for_size (window, 20 * scale);
+  paintable = gtk_window_get_icon_for_size (window, 20 * scale);
 
   if (paintable)
     {
@@ -297,8 +289,6 @@ _gtk_header_bar_update_window_buttons (GtkHeaderBar *bar)
   gchar *layout_desc;
   gchar **tokens, **t;
   gint i, j;
-  GMenuModel *menu;
-  gboolean shown_by_shell;
   gboolean is_sovereign_window;
 
   if (!gtk_widget_get_realized (widget))
@@ -322,13 +312,11 @@ _gtk_header_bar_update_window_buttons (GtkHeaderBar *bar)
     }
 
   priv->titlebar_icon = NULL;
-  priv->shows_app_menu = FALSE;
 
   if (!priv->show_title_buttons)
     return;
 
   g_object_get (gtk_widget_get_settings (widget),
-                "gtk-shell-shows-app-menu", &shown_by_shell,
                 "gtk-decoration-layout", &layout_desc,
                 NULL);
 
@@ -340,11 +328,6 @@ _gtk_header_bar_update_window_buttons (GtkHeaderBar *bar)
 
   window = GTK_WINDOW (toplevel);
 
-  if (!shown_by_shell && gtk_window_get_application (window))
-    menu = gtk_application_get_app_menu (gtk_window_get_application (window));
-  else
-    menu = NULL;
-
   is_sovereign_window = !gtk_window_get_modal (window) &&
                          gtk_window_get_transient_for (window) == NULL;
 
@@ -390,29 +373,6 @@ _gtk_header_bar_update_window_buttons (GtkHeaderBar *bar)
                       button = NULL;
                     }
                 }
-              else if (strcmp (t[j], "menu") == 0 &&
-                       menu != NULL &&
-                       is_sovereign_window)
-                {
-                  button = gtk_menu_button_new ();
-                  gtk_widget_set_valign (button, GTK_ALIGN_CENTER);
-                  gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (button), menu);
-                  gtk_widget_add_css_class (button, "titlebutton");
-                  gtk_widget_add_css_class (button, "menu");
-                  image = gtk_image_new ();
-                  gtk_menu_button_add_child (GTK_MENU_BUTTON (button), image);
-                  gtk_widget_set_can_focus (button, FALSE);
-
-                  accessible = gtk_widget_get_accessible (button);
-                  if (GTK_IS_ACCESSIBLE (accessible))
-                    atk_object_set_name (accessible, _("Application menu"));
-
-                  priv->titlebar_icon = image;
-                  if (!_gtk_header_bar_update_window_icon (bar, window))
-                    gtk_image_set_from_icon_name (GTK_IMAGE (priv->titlebar_icon), 
"application-x-executable-symbolic");
-
-                  priv->shows_app_menu = TRUE;
-                }
               else if (strcmp (t[j], "minimize") == 0 &&
                        is_sovereign_window)
                 {
@@ -519,14 +479,6 @@ _gtk_header_bar_update_window_buttons (GtkHeaderBar *bar)
   _gtk_header_bar_update_separator_visibility (bar);
 }
 
-gboolean
-_gtk_header_bar_shows_app_menu (GtkHeaderBar *bar)
-{
-  GtkHeaderBarPrivate *priv = gtk_header_bar_get_instance_private (bar);
-
-  return priv->show_title_buttons && priv->shows_app_menu;
-}
-
 static void
 update_default_decoration (GtkHeaderBar *bar)
 {
@@ -1053,8 +1005,6 @@ gtk_header_bar_realize (GtkWidget *widget)
   GTK_WIDGET_CLASS (gtk_header_bar_parent_class)->realize (widget);
 
   settings = gtk_widget_get_settings (widget);
-  g_signal_connect_swapped (settings, "notify::gtk-shell-shows-app-menu",
-                            G_CALLBACK (_gtk_header_bar_update_window_buttons), widget);
   g_signal_connect_swapped (settings, "notify::gtk-decoration-layout",
                             G_CALLBACK (_gtk_header_bar_update_window_buttons), widget);
   g_signal_connect_swapped (gtk_native_get_surface (gtk_widget_get_native (widget)), "notify::state",
@@ -1226,7 +1176,6 @@ gtk_header_bar_init (GtkHeaderBar *bar)
   priv->has_subtitle = TRUE;
   priv->decoration_layout = NULL;
   priv->decoration_layout_set = FALSE;
-  priv->shows_app_menu = FALSE;
   priv->state = GDK_SURFACE_STATE_WITHDRAWN;
 
   layout = gtk_widget_get_layout_manager (GTK_WIDGET (bar));
@@ -1432,10 +1381,9 @@ gtk_header_bar_get_has_subtitle (GtkHeaderBar *bar)
  * The format of the string is button names, separated by commas.
  * A colon separates the buttons that should appear on the left
  * from those on the right. Recognized button names are minimize,
- * maximize, close, icon (the window icon) and menu (a menu button
- * for the fallback app menu).
+ * maximize, close and icon (the window icon).
  *
- * For example, “menu:minimize,maximize,close” specifies a menu
+ * For example, “icon:minimize,maximize,close” specifies a icon
  * on the left, and minimize, maximize and close buttons on the right.
  */
 void
diff --git a/gtk/gtkheaderbarprivate.h b/gtk/gtkheaderbarprivate.h
index bad342d5fd..3fb3eb1e3b 100644
--- a/gtk/gtkheaderbarprivate.h
+++ b/gtk/gtkheaderbarprivate.h
@@ -24,7 +24,6 @@
 
 G_BEGIN_DECLS
 
-gboolean     _gtk_header_bar_shows_app_menu        (GtkHeaderBar *bar);
 void         _gtk_header_bar_track_default_decoration (GtkHeaderBar *bar);
 void         _gtk_header_bar_update_window_buttons (GtkHeaderBar *bar);
 gboolean     _gtk_header_bar_update_window_icon    (GtkHeaderBar *bar,
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index c02742e055..28da604c6a 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -3151,17 +3151,6 @@ gtk_window_get_titlebar (GtkWindow *window)
   return priv->title_box;
 }
 
-gboolean
-_gtk_window_titlebar_shows_app_menu (GtkWindow *window)
-{
-  GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
-
-  if (GTK_IS_HEADER_BAR (priv->title_box))
-    return _gtk_header_bar_shows_app_menu (GTK_HEADER_BAR (priv->title_box));
-
-  return FALSE;
-}
-
 /**
  * gtk_window_set_decorated:
  * @window: a #GtkWindow
diff --git a/gtk/gtkwindowprivate.h b/gtk/gtkwindowprivate.h
index 1cde20fc80..15a6639327 100644
--- a/gtk/gtkwindowprivate.h
+++ b/gtk/gtkwindowprivate.h
@@ -72,8 +72,6 @@ void            _gtk_window_schedule_mnemonics_visible (GtkWindow *window);
 
 void            _gtk_window_notify_keys_changed (GtkWindow *window);
 
-gboolean        _gtk_window_titlebar_shows_app_menu (GtkWindow *window);
-
 void            _gtk_window_get_shadow_width (GtkWindow *window,
                                               GtkBorder *border);
 


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