[gnome-control-center] power: Use GtkTemplate



commit 71383e8b50cb4939062c953607d54d010b9ae9d9
Author: Robert Ancell <robert ancell canonical com>
Date:   Wed May 30 12:35:43 2018 +1200

    power: Use GtkTemplate

 panels/power/cc-power-panel.c | 192 ++++++++++++++++++++----------------------
 panels/power/power.ui         |  72 +++++++++-------
 2 files changed, 132 insertions(+), 132 deletions(-)
---
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c
index f958e050c..e5061a6a9 100644
--- a/panels/power/cc-power-panel.c
+++ b/panels/power/cc-power-panel.c
@@ -46,8 +46,6 @@
  * #define TEST_FAKE_DEVICES
  */
 
-#define WID(b, w) (GtkWidget *) gtk_builder_get_object (b, w)
-
 struct _CcPowerPanel
 {
   CcPanel        parent_instance;
@@ -55,8 +53,19 @@ struct _CcPowerPanel
   GSettings     *gsd_settings;
   GSettings     *session_settings;
   GCancellable  *cancellable;
-  GtkBuilder    *builder;
+  GtkWidget     *main_scroll;
+  GtkWidget     *main_box;
+  GtkWidget     *vbox_power;
+  GtkWidget     *suspend_on_battery_switch;
+  GtkWidget     *suspend_on_battery_label;
+  GtkWidget     *suspend_on_battery_delay_label;
+  GtkWidget     *suspend_on_battery_delay_combo;
+  GtkWidget     *suspend_on_ac_switch;
+  GtkWidget     *suspend_on_ac_label;
+  GtkWidget     *suspend_on_ac_delay_combo;
   GtkWidget     *automatic_suspend_dialog;
+  GtkListStore  *liststore_idle_time;
+  GtkListStore  *liststore_power_button;
   UpClient      *up_client;
   GPtrArray     *devices;
   GDBusProxy    *screen_proxy;
@@ -131,7 +140,6 @@ cc_power_panel_dispose (GObject *object)
   g_cancellable_cancel (self->cancellable);
   g_clear_object (&self->cancellable);
   g_clear_pointer (&self->automatic_suspend_dialog, gtk_widget_destroy);
-  g_clear_object (&self->builder);
   g_clear_object (&self->screen_proxy);
   g_clear_object (&self->kbd_proxy);
   g_clear_pointer (&self->devices, g_ptr_array_unref);
@@ -160,12 +168,30 @@ cc_power_panel_get_help_uri (CcPanel *panel)
 static void
 cc_power_panel_class_init (CcPowerPanelClass *klass)
 {
+  GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
   CcPanelClass *panel_class = CC_PANEL_CLASS (klass);
 
   object_class->dispose = cc_power_panel_dispose;
 
   panel_class->get_help_uri = cc_power_panel_get_help_uri;
+
+  gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/power/power.ui");
+
+  gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, main_scroll);
+  gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, main_box);
+  gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, vbox_power);
+  gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, automatic_suspend_dialog);
+  gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, suspend_on_battery_switch);
+  gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, suspend_on_battery_label);
+  gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, suspend_on_battery_delay_label);
+  gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, suspend_on_battery_delay_combo);
+  gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, suspend_on_ac_switch);
+  gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, suspend_on_ac_label);
+  gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, suspend_on_ac_delay_combo);
+  gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, automatic_suspend_dialog);
+  gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, liststore_idle_time);
+  gtk_widget_class_bind_template_child (widget_class, CcPowerPanel, liststore_power_button);
 }
 
 static GtkWidget *
@@ -1252,11 +1278,11 @@ set_ac_battery_ui_mode (CcPowerPanel *self)
 
   if (!has_batteries)
     {
-      gtk_widget_hide (WID (self->builder, "suspend_on_battery_switch"));
-      gtk_widget_hide (WID (self->builder, "suspend_on_battery_label"));
-      gtk_widget_hide (WID (self->builder, "suspend_on_battery_delay_label"));
-      gtk_widget_hide (WID (self->builder, "suspend_on_battery_delay_combo"));
-      gtk_label_set_label (GTK_LABEL (WID (self->builder, "suspend_on_ac_label")),
+      gtk_widget_hide (self->suspend_on_battery_switch);
+      gtk_widget_hide (self->suspend_on_battery_label);
+      gtk_widget_hide (self->suspend_on_battery_delay_label);
+      gtk_widget_hide (self->suspend_on_battery_delay_combo);
+      gtk_label_set_label (GTK_LABEL (self->suspend_on_ac_label),
                            _("When _idle"));
     }
 }
@@ -1699,7 +1725,6 @@ iio_proxy_vanished_cb (GDBusConnection *connection,
 static void
 add_power_saving_section (CcPowerPanel *self)
 {
-  GtkWidget *vbox;
   GtkWidget *widget, *box, *label, *row;
   GtkWidget *combo;
   GtkWidget *box2;
@@ -1708,14 +1733,12 @@ add_power_saving_section (CcPowerPanel *self)
   int value;
   g_autofree gchar *s = NULL;
 
-  vbox = WID (self->builder, "vbox_power");
-
   s = g_strdup_printf ("<b>%s</b>", _("Power Saving"));
   label = gtk_label_new (s);
   gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
   gtk_widget_set_halign (label, GTK_ALIGN_START);
   gtk_widget_set_margin_bottom (label, 12);
-  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (self->vbox_power), label, FALSE, TRUE, 0);
   gtk_widget_show (label);
 
   widget = gtk_list_box_new ();
@@ -1738,7 +1761,7 @@ add_power_saving_section (CcPowerPanel *self)
   gtk_widget_set_margin_bottom (box, 32);
   gtk_widget_show (box);
   gtk_container_add (GTK_CONTAINER (box), widget);
-  gtk_box_pack_start (GTK_BOX (vbox), box, FALSE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (self->vbox_power), box, FALSE, TRUE, 0);
 
   row = add_brightness_row (self, _("_Screen brightness"), &self->brightness_scale);
   self->brightness_row = row;
@@ -1768,12 +1791,12 @@ add_power_saving_section (CcPowerPanel *self)
   gtk_widget_set_margin_bottom (label, 6);
   gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
 
-  self->als_switch = sw = gtk_switch_new ();
-  gtk_widget_set_margin_start (sw, 20);
-  gtk_widget_set_margin_end (sw, 20);
-  gtk_widget_set_valign (sw, GTK_ALIGN_CENTER);
-  gtk_box_pack_start (GTK_BOX (box), sw, FALSE, TRUE, 0);
-  gtk_label_set_mnemonic_widget (GTK_LABEL (label), sw);
+  self->als_switch = gtk_switch_new ();
+  gtk_widget_set_margin_start (self->als_switch, 20);
+  gtk_widget_set_margin_end (self->als_switch, 20);
+  gtk_widget_set_valign (self->als_switch, GTK_ALIGN_CENTER);
+  gtk_box_pack_start (GTK_BOX (box), self->als_switch, FALSE, TRUE, 0);
+  gtk_label_set_mnemonic_widget (GTK_LABEL (label), self->als_switch);
   gtk_container_add (GTK_CONTAINER (widget), row);
   gtk_size_group_add_widget (self->row_sizegroup, row);
   g_signal_connect (G_OBJECT (self->als_switch), "notify::active",
@@ -1826,7 +1849,7 @@ add_power_saving_section (CcPowerPanel *self)
   combo = gtk_combo_box_text_new ();
   gtk_combo_box_set_entry_text_column (GTK_COMBO_BOX (combo), 0);
   gtk_combo_box_set_model (GTK_COMBO_BOX (combo),
-                           GTK_TREE_MODEL (gtk_builder_get_object (self->builder, "liststore_idle_time")));
+                           GTK_TREE_MODEL (self->liststore_idle_time));
   value = g_settings_get_uint (self->session_settings, "idle-delay");
   set_value_for_combo (GTK_COMBO_BOX (combo), value);
   g_signal_connect (combo, "changed",
@@ -1861,12 +1884,12 @@ add_power_saving_section (CcPowerPanel *self)
   gtk_style_context_add_class (gtk_widget_get_style_context (w), GTK_STYLE_CLASS_DIM_LABEL);
   gtk_box_pack_start (GTK_BOX (box2), w, TRUE, TRUE, 0);
 
-  self->wifi_switch = sw = gtk_switch_new ();
-  gtk_widget_set_margin_start (sw, 20);
-  gtk_widget_set_margin_end (sw, 20);
-  gtk_widget_set_valign (sw, GTK_ALIGN_CENTER);
-  gtk_box_pack_start (GTK_BOX (box), sw, FALSE, TRUE, 0);
-  gtk_label_set_mnemonic_widget (GTK_LABEL (label), sw);
+  self->wifi_switch = gtk_switch_new ();
+  gtk_widget_set_margin_start (self->wifi_switch, 20);
+  gtk_widget_set_margin_end (self->wifi_switch, 20);
+  gtk_widget_set_valign (self->wifi_switch, GTK_ALIGN_CENTER);
+  gtk_box_pack_start (GTK_BOX (box), self->wifi_switch, FALSE, TRUE, 0);
+  gtk_label_set_mnemonic_widget (GTK_LABEL (label), self->wifi_switch);
   gtk_container_add (GTK_CONTAINER (widget), row);
   gtk_size_group_add_widget (self->row_sizegroup, row);
 
@@ -1891,12 +1914,12 @@ add_power_saving_section (CcPowerPanel *self)
   gtk_style_context_add_class (gtk_widget_get_style_context (w), GTK_STYLE_CLASS_DIM_LABEL);
   gtk_box_pack_start (GTK_BOX (box2), w, TRUE, TRUE, 0);
 
-  self->mobile_switch = sw = gtk_switch_new ();
-  gtk_widget_set_margin_start (sw, 20);
-  gtk_widget_set_margin_end (sw, 20);
-  gtk_widget_set_valign (sw, GTK_ALIGN_CENTER);
-  gtk_box_pack_start (GTK_BOX (box), sw, FALSE, TRUE, 0);
-  gtk_label_set_mnemonic_widget (GTK_LABEL (label), sw);
+  self->mobile_switch = gtk_switch_new ();
+  gtk_widget_set_margin_start (self->mobile_switch, 20);
+  gtk_widget_set_margin_end (self->mobile_switch, 20);
+  gtk_widget_set_valign (self->mobile_switch, GTK_ALIGN_CENTER);
+  gtk_box_pack_start (GTK_BOX (box), self->mobile_switch, FALSE, TRUE, 0);
+  gtk_label_set_mnemonic_widget (GTK_LABEL (label), self->mobile_switch);
   gtk_container_add (GTK_CONTAINER (widget), row);
   gtk_size_group_add_widget (self->row_sizegroup, row);
 
@@ -1955,12 +1978,12 @@ add_power_saving_section (CcPowerPanel *self)
   gtk_style_context_add_class (gtk_widget_get_style_context (label), GTK_STYLE_CLASS_DIM_LABEL);
   gtk_box_pack_start (GTK_BOX (box2), label, TRUE, TRUE, 0);
 
-  self->bt_switch = sw = gtk_switch_new ();
-  gtk_widget_set_margin_start (sw, 20);
-  gtk_widget_set_margin_end (sw, 20);
-  gtk_widget_set_valign (sw, GTK_ALIGN_CENTER);
-  gtk_box_pack_start (GTK_BOX (box), sw, FALSE, TRUE, 0);
-  gtk_label_set_mnemonic_widget (GTK_LABEL (label), sw);
+  self->bt_switch = gtk_switch_new ();
+  gtk_widget_set_margin_start (self->bt_switch, 20);
+  gtk_widget_set_margin_end (self->bt_switch, 20);
+  gtk_widget_set_valign (self->bt_switch, GTK_ALIGN_CENTER);
+  gtk_box_pack_start (GTK_BOX (box), self->bt_switch, FALSE, TRUE, 0);
+  gtk_label_set_mnemonic_widget (GTK_LABEL (label), self->bt_switch);
   gtk_container_add (GTK_CONTAINER (widget), row);
   gtk_size_group_add_widget (self->row_sizegroup, row);
   gtk_widget_show_all (box);
@@ -2172,9 +2195,8 @@ can_suspend_or_hibernate (CcPowerPanel *self,
 static void
 add_suspend_and_power_off_section (CcPowerPanel *self)
 {
-  GtkWidget *vbox;
   GtkWidget *widget, *box, *label;
-  GtkWidget *sw, *row;
+  GtkWidget *row;
   g_autofree gchar *s = NULL;
   gint value;
   GtkWidget *dialog;
@@ -2207,15 +2229,13 @@ add_suspend_and_power_off_section (CcPowerPanel *self)
       g_settings_set_int (self->gsd_settings, "sleep-inactive-battery-timeout", 1800);
     }
 
-  vbox = WID (self->builder, "vbox_power");
-
   /* Frame header */
   s = g_markup_printf_escaped ("<b>%s</b>", _("Suspend & Power Button"));
   label = gtk_label_new (s);
   gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
   gtk_widget_set_halign (label, GTK_ALIGN_START);
   gtk_widget_set_margin_bottom (label, 12);
-  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (self->vbox_power), label, FALSE, TRUE, 0);
   gtk_widget_show (label);
 
   widget = gtk_list_box_new ();
@@ -2240,7 +2260,7 @@ add_suspend_and_power_off_section (CcPowerPanel *self)
   gtk_widget_set_margin_bottom (box, 32);
   gtk_widget_show (box);
   gtk_container_add (GTK_CONTAINER (box), widget);
-  gtk_box_pack_start (GTK_BOX (vbox), box, FALSE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (self->vbox_power), box, FALSE, TRUE, 0);
 
   /* Automatic suspend row */
   if (can_suspend)
@@ -2258,14 +2278,14 @@ add_suspend_and_power_off_section (CcPowerPanel *self)
       gtk_widget_set_margin_bottom (label, 6);
       gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
 
-      self->automatic_suspend_label = sw = gtk_label_new ("");
-      gtk_label_set_mnemonic_widget (GTK_LABEL (label), sw);
-      g_signal_connect (sw, "mnemonic-activate",
+      self->automatic_suspend_label = gtk_label_new ("");
+      gtk_label_set_mnemonic_widget (GTK_LABEL (label), self->automatic_suspend_label);
+      g_signal_connect (self->automatic_suspend_label, "mnemonic-activate",
                         G_CALLBACK (automatic_suspend_activate), self);
-      gtk_widget_set_halign (sw, GTK_ALIGN_END);
-      gtk_widget_set_margin_start (sw, 24);
-      gtk_widget_set_margin_end (sw, 24);
-      gtk_box_pack_start (GTK_BOX (box), sw, FALSE, TRUE, 0);
+      gtk_widget_set_halign (self->automatic_suspend_label, GTK_ALIGN_END);
+      gtk_widget_set_margin_start (self->automatic_suspend_label, 24);
+      gtk_widget_set_margin_end (self->automatic_suspend_label, 24);
+      gtk_box_pack_start (GTK_BOX (box), self->automatic_suspend_label, FALSE, TRUE, 0);
       gtk_container_add (GTK_CONTAINER (widget), row);
       gtk_size_group_add_widget (self->row_sizegroup, row);
 
@@ -2273,34 +2293,30 @@ add_suspend_and_power_off_section (CcPowerPanel *self)
       g_signal_connect (dialog, "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL);
       g_signal_connect (self->gsd_settings, "changed", G_CALLBACK (on_suspend_settings_changed), self);
 
-      sw = WID (self->builder, "suspend_on_battery_switch");
       g_settings_bind_with_mapping (self->gsd_settings, "sleep-inactive-battery-type",
-                                    sw, "active",
+                                    self->suspend_on_battery_switch, "active",
                                     G_SETTINGS_BIND_DEFAULT,
                                     get_sleep_type, set_sleep_type, NULL, NULL);
 
-      combo = WID (self->builder, "suspend_on_battery_delay_combo");
-      g_object_set_data (G_OBJECT (combo), "_gsettings_key", "sleep-inactive-battery-timeout");
+      g_object_set_data (G_OBJECT (self->suspend_on_battery_delay_combo), "_gsettings_key", 
"sleep-inactive-battery-timeout");
       value = g_settings_get_int (self->gsd_settings, "sleep-inactive-battery-timeout");
-      set_value_for_combo (GTK_COMBO_BOX (combo), value);
-      g_signal_connect (combo, "changed",
+      set_value_for_combo (GTK_COMBO_BOX (self->suspend_on_battery_delay_combo), value);
+      g_signal_connect (self->suspend_on_battery_delay_combo, "changed",
                         G_CALLBACK (combo_time_changed_cb), self);
-      g_object_bind_property (sw, "active", combo, "sensitive",
+      g_object_bind_property (self->suspend_on_battery_switch, "active", 
self->suspend_on_battery_delay_combo, "sensitive",
                               G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
 
-      sw = WID (self->builder, "suspend_on_ac_switch");
       g_settings_bind_with_mapping (self->gsd_settings, "sleep-inactive-ac-type",
-                                    sw, "active",
+                                    self->suspend_on_ac_switch, "active",
                                     G_SETTINGS_BIND_DEFAULT,
                                     get_sleep_type, set_sleep_type, NULL, NULL);
 
-      combo = WID (self->builder, "suspend_on_ac_delay_combo");
-      g_object_set_data (G_OBJECT (combo), "_gsettings_key", "sleep-inactive-ac-timeout");
+      g_object_set_data (G_OBJECT (self->suspend_on_ac_delay_combo), "_gsettings_key", 
"sleep-inactive-ac-timeout");
       value = g_settings_get_int (self->gsd_settings, "sleep-inactive-ac-timeout");
-      set_value_for_combo (GTK_COMBO_BOX (combo), value);
-      g_signal_connect (combo, "changed",
+      set_value_for_combo (GTK_COMBO_BOX (self->suspend_on_ac_delay_combo), value);
+      g_signal_connect (self->suspend_on_ac_delay_combo, "changed",
                         G_CALLBACK (combo_time_changed_cb), self);
-      g_object_bind_property (sw, "active", combo, "sensitive",
+      g_object_bind_property (self->suspend_on_ac_switch, "active", self->suspend_on_ac_delay_combo, 
"sensitive",
                               G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
 
       set_ac_battery_ui_mode (self);
@@ -2327,7 +2343,7 @@ add_suspend_and_power_off_section (CcPowerPanel *self)
 
   combo = gtk_combo_box_text_new ();
   gtk_combo_box_set_entry_text_column (GTK_COMBO_BOX (combo), 0);
-  model = GTK_TREE_MODEL (gtk_builder_get_object (self->builder, "liststore_power_button"));
+  model = GTK_TREE_MODEL (self->liststore_power_button);
   populate_power_button_model (model, can_suspend, can_hibernate);
   gtk_combo_box_set_model (GTK_COMBO_BOX (combo), model);
   button_value = g_settings_get_enum (self->gsd_settings, "power-button-action");
@@ -2373,16 +2389,13 @@ battery_sort_func (gconstpointer a, gconstpointer b, gpointer data)
 static void
 add_battery_section (CcPowerPanel *self)
 {
-  GtkWidget *vbox;
   GtkWidget *widget, *box;
   GtkWidget *frame;
   g_autofree gchar *s = NULL;
 
-  vbox = WID (self->builder, "vbox_power");
-
   self->battery_section = box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
   gtk_widget_set_margin_bottom (box, 32);
-  gtk_box_pack_start (GTK_BOX (vbox), box, FALSE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (self->vbox_power), box, FALSE, TRUE, 0);
 
   s = g_markup_printf_escaped ("<b>%s</b>", _("Battery"));
   self->battery_heading = widget = gtk_label_new (s);
@@ -2420,17 +2433,14 @@ add_battery_section (CcPowerPanel *self)
 static void
 add_device_section (CcPowerPanel *self)
 {
-  GtkWidget *vbox;
   GtkWidget *widget, *box;
   GtkWidget *frame;
   g_autofree gchar *s = NULL;
 
-  vbox = WID (self->builder, "vbox_power");
-
   self->device_section = box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
   gtk_widget_set_margin_top (box, 6);
   gtk_widget_set_margin_bottom (box, 32);
-  gtk_box_pack_start (GTK_BOX (vbox), box, FALSE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (self->vbox_power), box, FALSE, TRUE, 0);
 
   s = g_markup_printf_escaped ("<b>%s</b>", _("Devices"));
   self->device_heading = widget = gtk_label_new (s);
@@ -2486,26 +2496,11 @@ on_content_size_changed (GtkWidget *widget, GtkAllocation *allocation, gpointer
 static void
 cc_power_panel_init (CcPowerPanel *self)
 {
-  g_autoptr(GError) error = NULL;
-  GtkWidget  *widget;
-  GtkWidget  *box;
-  guint       i;
+  guint i;
 
   g_resources_register (cc_power_get_resource ());
 
-  self->builder = gtk_builder_new ();
-
-  gtk_builder_add_from_resource (self->builder,
-                                 "/org/gnome/control-center/power/power.ui",
-                                 &error);
-
-  if (error != NULL)
-    {
-      g_warning ("Could not load interface file: %s", error->message);
-      return;
-    }
-
-  self->automatic_suspend_dialog = WID (self->builder, "automatic_suspend_dialog");
+  gtk_widget_init_template (GTK_WIDGET (self));
 
   self->cancellable = g_cancellable_new ();
 
@@ -2562,16 +2557,9 @@ cc_power_panel_init (CcPowerPanel *self)
   }
   up_client_changed (self->up_client, NULL, self);
 
-  widget = WID (self->builder, "main_box");
-  box = gtk_scrolled_window_new (NULL, NULL);
-  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (box),
-                                  GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
-  g_signal_connect (widget, "size-allocate",
+  g_signal_connect (self->main_box, "size-allocate",
                     G_CALLBACK (on_content_size_changed), NULL);
-  gtk_widget_show (box);
-  gtk_container_add (GTK_CONTAINER (self), box);
-  gtk_container_add (GTK_CONTAINER (box), widget);
 
-  self->focus_adjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (box));
-  gtk_container_set_focus_vadjustment (GTK_CONTAINER (widget), self->focus_adjustment);
+  self->focus_adjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (self->main_scroll));
+  gtk_container_set_focus_vadjustment (GTK_CONTAINER (self->main_box), self->focus_adjustment);
 }
diff --git a/panels/power/power.ui b/panels/power/power.ui
index 2c113b238..f6a2b09c8 100644
--- a/panels/power/power.ui
+++ b/panels/power/power.ui
@@ -109,45 +109,57 @@
       <column type="gint"/>
     </columns>
   </object>
-  <object class="GtkBox" id="main_box">
+  <template class="CcPowerPanel" parent="CcPanel">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
-
-    <!-- Stub boxes to make the content cover 1/3 of the screen -->
     <child>
-      <object class="GtkBox">
+      <object class="GtkScrolledWindow" id="main_scroll">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
-        <property name="hexpand">True</property>
-      </object>
-    </child>
+        <property name="hscrollbar_policy">never</property>
+        <child>
+          <object class="GtkBox" id="main_box">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <!-- Stub boxes to make the content cover 1/3 of the screen -->
+            <child>
+              <object class="GtkBox">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="hexpand">True</property>
+              </object>
+            </child>
 
-    <child>
-      <object class="GtkBox">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="hexpand">True</property>
-      </object>
-      <packing>
-        <property name="pack_type">end</property>
-      </packing>
-    </child>
+            <child>
+              <object class="GtkBox">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="hexpand">True</property>
+              </object>
+              <packing>
+                <property name="pack_type">end</property>
+              </packing>
+            </child>
 
-    <!-- Content -->
-    <child>
-      <object class="GtkBox" id="vbox_power">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="margin_top">32</property>
-        <property name="margin_bottom">32</property>
-        <property name="margin_left">24</property>
-        <property name="margin_right">24</property>
-        <property name="orientation">vertical</property>
-        <property name="spacing">3</property>
-        <property name="hexpand">True</property>
+            <!-- Content -->
+            <child>
+              <object class="GtkBox" id="vbox_power">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="margin_top">32</property>
+                <property name="margin_bottom">32</property>
+                <property name="margin_left">24</property>
+                <property name="margin_right">24</property>
+                <property name="orientation">vertical</property>
+                <property name="spacing">3</property>
+                <property name="hexpand">True</property>
+              </object>
+            </child>
+          </object>
+        </child>
       </object>
     </child>
-  </object>
+  </template>
 
   <object class="GtkDialog" id="automatic_suspend_dialog">
     <property name="can_focus">False</property>


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