[gnome-games/wip/exalm/cleanups: 4/5] media-menu-button: Don't subclass GtkMenuButton
- From: Alexander Mikhaylenko <alexm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-games/wip/exalm/cleanups: 4/5] media-menu-button: Don't subclass GtkMenuButton
- Date: Wed, 29 May 2019 14:03:33 +0000 (UTC)
commit f7ee2c24c11b89d6d2f746e4aabd4f53236b9566
Author: Alexander Mikhaylenko <exalm7659 gmail com>
Date: Wed May 29 16:57:08 2019 +0500
media-menu-button: Don't subclass GtkMenuButton
data/ui/display-header-bar.ui | 6 +-----
data/ui/media-menu-button.ui | 28 +++++++++++++++++-----------
src/ui/media-menu-button.vala | 31 ++++++++++++++++++++-----------
3 files changed, 38 insertions(+), 27 deletions(-)
---
diff --git a/data/ui/display-header-bar.ui b/data/ui/display-header-bar.ui
index 09e57473..61514a69 100644
--- a/data/ui/display-header-bar.ui
+++ b/data/ui/display-header-bar.ui
@@ -89,11 +89,7 @@
</packing>
</child>
<child>
- <object class="GamesMediaMenuButton" id="media_button">
- <property name="visible">False</property>
- <property name="valign">center</property>
- <property name="use-underline">True</property>
- </object>
+ <object class="GamesMediaMenuButton" id="media_button"/>
<packing>
<property name="pack-type">end</property>
</packing>
diff --git a/data/ui/media-menu-button.ui b/data/ui/media-menu-button.ui
index 2d7440d2..9a023388 100644
--- a/data/ui/media-menu-button.ui
+++ b/data/ui/media-menu-button.ui
@@ -1,19 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk+" version="3.24"/>
- <template class="GamesMediaMenuButton" parent="GtkMenuButton">
- <style>
- <class name="image-button"/>
- </style>
- <signal name="notify::media-set" handler="on_media_set_changed"/>
- <child internal-child="accessible">
- <object class="AtkObject" id="a11y-display-discs">
- <property name="accessible-name" translatable="yes">Media</property>
- </object>
- </child>
+ <template class="GamesMediaMenuButton" parent="GtkBin">
<child>
- <object class="GtkImage" id="media_image">
+ <object class="GtkMenuButton" id="menu_button">
<property name="visible">True</property>
+ <property name="valign">center</property>
+ <property name="use-underline">True</property>
+ <style>
+ <class name="image-button"/>
+ </style>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="a11y-display-discs">
+ <property name="accessible-name" translatable="yes">Media</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImage" id="media_image">
+ <property name="visible">True</property>
+ </object>
+ </child>
</object>
</child>
</template>
diff --git a/src/ui/media-menu-button.vala b/src/ui/media-menu-button.vala
index dd074a3b..4fdc0a14 100644
--- a/src/ui/media-menu-button.vala
+++ b/src/ui/media-menu-button.vala
@@ -1,22 +1,31 @@
// This file is part of GNOME Games. License: GPL-3.0+.
[GtkTemplate (ui = "/org/gnome/Games/ui/media-menu-button.ui")]
-private class Games.MediaMenuButton : Gtk.MenuButton {
- public MediaSet media_set { get; set; }
-
+private class Games.MediaMenuButton : Gtk.Bin {
[GtkChild]
private Gtk.Image media_image;
+ [GtkChild]
+ private Gtk.MenuButton menu_button;
- [GtkCallback]
- private void on_media_set_changed () {
- if (media_set == null || media_set.get_size () < 2) {
- hide ();
+ private MediaSet _media_set;
+ public MediaSet media_set {
+ get { return _media_set; }
+ set {
+ _media_set = value;
- return;
- }
+ if (media_set == null || media_set.get_size () < 2) {
+ hide ();
+
+ return;
+ }
- media_image.set_from_gicon (media_set.icon, Gtk.IconSize.BUTTON);
+ media_image.set_from_gicon (media_set.icon, Gtk.IconSize.BUTTON);
+
+ show ();
+ }
+ }
- show ();
+ public Gtk.Popover popover {
+ set { menu_button.popover = value; }
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]