[four-in-a-row/arnaudb/wip/gtk4: 70/92] Make HistoryButton a ToggleButton.
- From: Arnaud B. <arnaudb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [four-in-a-row/arnaudb/wip/gtk4: 70/92] Make HistoryButton a ToggleButton.
- Date: Sat, 26 Sep 2020 10:29:07 +0000 (UTC)
commit 45ac34f3a284c2fe0f4b1c2b2aee5fbaeb5daa93
Author: Arnaud Bonatti <arnaud bonatti gmail com>
Date: Sun Apr 19 23:32:58 2020 +0200
Make HistoryButton a ToggleButton.
data/ui/history-button.ui | 2 +-
src/history-button.vala | 14 +++++++++++++-
2 files changed, 14 insertions(+), 2 deletions(-)
---
diff --git a/data/ui/history-button.ui b/data/ui/history-button.ui
index 8a53ae0..731e6bc 100644
--- a/data/ui/history-button.ui
+++ b/data/ui/history-button.ui
@@ -19,7 +19,7 @@
-->
<interface>
<requires lib="gtk+" version="3.12"/>
- <template class="HistoryButton" parent="GtkMenuButton">
+ <template class="HistoryButton" parent="GtkToggleButton">
<property name="visible">True</property>
<property name="valign">center</property>
<property name="can-focus">True</property>
diff --git a/src/history-button.vala b/src/history-button.vala
index e28bc36..309dfbc 100644
--- a/src/history-button.vala
+++ b/src/history-button.vala
@@ -21,13 +21,22 @@
using Gtk;
[GtkTemplate (ui = "/org/gnome/Four-in-a-row/ui/history-button.ui")]
-private class HistoryButton : MenuButton, AdaptativeWidget
+private class HistoryButton : ToggleButton, AdaptativeWidget
{
[CCode (notify = false)] public ThemeManager theme_manager { private get; protected construct; }
[GtkChild] private Stack stack;
[GtkChild] private DrawingArea drawing;
+ public GLib.Menu menu_model { protected construct {
+ PopoverMenu popover = new PopoverMenu.from_model (value);
+ popover.set_parent (this);
+ popover.set_autohide (false);
+ toggled.connect (() => { if (get_active ()) popover.popup (); else popover.popdown (); }); //
toggled is run-first
+ popover.closed.connect (() => set_active (false));
+ }
+ }
+
internal HistoryButton (ref GLib.Menu menu, ThemeManager theme_manager)
{
Object (menu_model: menu, theme_manager: theme_manager);
@@ -35,6 +44,9 @@ private class HistoryButton : MenuButton, AdaptativeWidget
construct
{
+ BinLayout layout = new BinLayout ();
+ set_layout_manager (layout);
+
drawing.size_allocate.connect (configure_drawing);
drawing.set_draw_func (update_drawing);
theme_manager.theme_changed.connect (() => {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]