[epiphany/wip/exalm/menu] page-menu-popover: Set minimum width for zoom button




commit af62615099a113d4c816fa11cf194d70721f6ab5
Author: Alexander Mikhaylenko <alexm gnome org>
Date:   Fri Oct 2 20:44:26 2020 +0500

    page-menu-popover: Set minimum width for zoom button
    
    Also refactor how it's set, there's no need to pass widgets around here.
    
    Fixes https://gitlab.gnome.org/GNOME/epiphany/issues/953

 src/ephy-header-bar.c                  | 20 ++++++++++++--------
 src/ephy-header-bar.h                  |  3 ++-
 src/ephy-window.c                      |  8 +-------
 src/resources/gtk/page-menu-popover.ui |  9 +++++++--
 4 files changed, 22 insertions(+), 18 deletions(-)
---
diff --git a/src/ephy-header-bar.c b/src/ephy-header-bar.c
index a248b0ef9..2440fb9a1 100644
--- a/src/ephy-header-bar.c
+++ b/src/ephy-header-bar.c
@@ -60,7 +60,7 @@ struct _EphyHeaderBar {
   EphyActionBarStart *action_bar_start;
   EphyActionBarEnd *action_bar_end;
   GtkWidget *page_menu_button;
-  GtkWidget *zoom_level_button;
+  GtkWidget *zoom_level_label;
   GtkWidget *restore_button;
   GtkWidget *combined_stop_reload_button;
   GtkWidget *combined_stop_reload_image;
@@ -265,7 +265,7 @@ ephy_header_bar_constructed (GObject *object)
   g_type_ensure (G_TYPE_THEMED_ICON);
   builder = gtk_builder_new_from_resource ("/org/gnome/epiphany/gtk/page-menu-popover.ui");
   page_menu_popover = GTK_WIDGET (gtk_builder_get_object (builder, "page-menu-popover"));
-  header_bar->zoom_level_button = GTK_WIDGET (gtk_builder_get_object (builder, "zoom-level"));
+  header_bar->zoom_level_label = GTK_WIDGET (gtk_builder_get_object (builder, "zoom-level"));
   if (ephy_embed_shell_get_mode (embed_shell) == EPHY_EMBED_SHELL_MODE_APPLICATION) {
     gtk_widget_destroy (GTK_WIDGET (gtk_builder_get_object (builder, "new-window-separator")));
     gtk_widget_destroy (GTK_WIDGET (gtk_builder_get_object (builder, "new-window-button")));
@@ -383,12 +383,6 @@ ephy_header_bar_get_title_widget (EphyHeaderBar *header_bar)
   return header_bar->title_widget;
 }
 
-GtkWidget *
-ephy_header_bar_get_zoom_level_button (EphyHeaderBar *header_bar)
-{
-  return header_bar->zoom_level_button;
-}
-
 GtkWidget *
 ephy_header_bar_get_page_menu_button (EphyHeaderBar *header_bar)
 {
@@ -455,3 +449,13 @@ ephy_header_bar_start_change_combined_stop_reload_state (EphyHeaderBar *header_b
                                  _(REFRESH_BUTTON_TOOLTIP));
   }
 }
+
+void
+ephy_header_bar_set_zoom_level (EphyHeaderBar *header_bar,
+                                gdouble        zoom)
+{
+  g_autofree gchar *zoom_level = g_strdup_printf ("%2.0f%%", zoom * 100);
+
+  gtk_label_set_label (GTK_LABEL (header_bar->zoom_level_label), zoom_level);
+}
+
diff --git a/src/ephy-header-bar.h b/src/ephy-header-bar.h
index 206c34268..5227bcbff 100644
--- a/src/ephy-header-bar.h
+++ b/src/ephy-header-bar.h
@@ -36,7 +36,6 @@ G_DECLARE_FINAL_TYPE (EphyHeaderBar, ephy_header_bar, EPHY, HEADER_BAR, GtkHeade
 
 GtkWidget          *ephy_header_bar_new                            (EphyWindow    *window);
 EphyTitleWidget    *ephy_header_bar_get_title_widget               (EphyHeaderBar *header_bar);
-GtkWidget          *ephy_header_bar_get_zoom_level_button          (EphyHeaderBar *header_bar);
 GtkWidget          *ephy_header_bar_get_page_menu_button           (EphyHeaderBar *header_bar);
 EphyWindow         *ephy_header_bar_get_window                     (EphyHeaderBar *header_bar);
 void                ephy_header_bar_set_reader_mode_state          (EphyHeaderBar *header_bar,
@@ -47,5 +46,7 @@ void                ephy_header_bar_set_adaptive_mode              (EphyHeaderBa
                                                                     EphyAdaptiveMode  adaptive_mode);
 void                ephy_header_bar_start_change_combined_stop_reload_state (EphyHeaderBar *header_bar,
                                                                              gboolean       loading);
+void                ephy_header_bar_set_zoom_level                 (EphyHeaderBar *header_bar,
+                                                                    gdouble        zoom);
 
 G_END_DECLS
diff --git a/src/ephy-window.c b/src/ephy-window.c
index bf2e3bb4f..b661d99d1 100644
--- a/src/ephy-window.c
+++ b/src/ephy-window.c
@@ -1104,19 +1104,13 @@ sync_tab_zoom (WebKitWebView *web_view,
   GAction *action;
   gboolean can_zoom_in = TRUE, can_zoom_out = TRUE, can_zoom_normal = FALSE;
   double zoom;
-  GtkWidget *zoom_level_button;
-  gchar *zoom_level;
 
   if (window->closing)
     return;
 
   zoom = webkit_web_view_get_zoom_level (web_view);
 
-  zoom_level_button = ephy_header_bar_get_zoom_level_button (EPHY_HEADER_BAR (window->header_bar));
-
-  zoom_level = g_strdup_printf ("%2.0f%%", zoom * 100);
-  gtk_button_set_label (GTK_BUTTON (zoom_level_button), zoom_level);
-  g_free (zoom_level);
+  ephy_header_bar_set_zoom_level (EPHY_HEADER_BAR (window->header_bar), zoom);
 
   if (zoom >= ZOOM_MAXIMAL) {
     can_zoom_in = FALSE;
diff --git a/src/resources/gtk/page-menu-popover.ui b/src/resources/gtk/page-menu-popover.ui
index 366b2ddc5..8627bda0a 100644
--- a/src/resources/gtk/page-menu-popover.ui
+++ b/src/resources/gtk/page-menu-popover.ui
@@ -38,12 +38,17 @@
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="zoom-level">
-                <property name="label">100%</property>
+              <object class="GtkButton">
                 <property name="tooltip_text" translatable="yes">Restore Zoom</property>
                 <property name="action-name">win.zoom-normal</property>
                 <property name="xalign">0.5</property>
                 <property name="visible">True</property>
+                <child>
+                  <object class="GtkLabel" id="zoom-level">
+                    <property name="visible">True</property>
+                    <property name="width-chars">5</property>
+                  </object>
+                </child>
               </object>
               <packing>
                 <property name="expand">True</property>


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