[gnome-taquin/arnaudb/wip/gtk4: 82/108] Use ToggleButton instead of ModelButton.




commit a3551d79d897e15da0f7f2c4e2b1edda2739edc6
Author: Arnaud Bonatti <arnaud bonatti gmail com>
Date:   Wed Feb 19 22:54:14 2020 +0100

    Use ToggleButton instead of ModelButton.

 data/ui/history-button.ui |  2 +-
 src/history-button.vala   | 12 ++++++++++--
 2 files changed, 11 insertions(+), 3 deletions(-)
---
diff --git a/data/ui/history-button.ui b/data/ui/history-button.ui
index e7c74dd..e29f5d8 100644
--- a/data/ui/history-button.ui
+++ b/data/ui/history-button.ui
@@ -17,7 +17,7 @@
 -->
 <interface>
   <requires lib="gtk+" version="3.99"/>
-  <template class="HistoryButton" parent="GtkMenuButton">
+  <template class="HistoryButton" parent="GtkToggleButton">
     <property name="valign">center</property>
     <property name="can-focus">True</property>
     <property name="focus-on-click">False</property>
diff --git a/src/history-button.vala b/src/history-button.vala
index 83f4c50..bfb6cbd 100644
--- a/src/history-button.vala
+++ b/src/history-button.vala
@@ -21,8 +21,11 @@
 using Gtk;
 
 [GtkTemplate (ui = "/org/gnome/Taquin/ui/history-button.ui")]
-private class HistoryButton : MenuButton
+private class HistoryButton : ToggleButton
 {
+    ulong toggled_handler = 0;
+    private PopoverMenu popover;
+
     construct
     {
         update_state (/* label */ "0", /* sensitive */ false);
@@ -60,7 +63,12 @@ private class HistoryButton : MenuButton
         if (best_score != 0)
             generate_best_score_section (ref best_score, ref menu);
         menu.freeze ();
-        set_menu_model (menu);
+
+        if (toggled_handler != 0)
+            disconnect (toggled_handler);
+        popover = new PopoverMenu.from_model (this, menu);
+        popover.set_autohide (false);
+        toggled_handler = toggled.connect (() => { if (get_active ()) popover.popup (); else popover.popdown 
(); }); // toggled is run-first
     }
 
     private static inline void generate_undo_actions_section (ref GLib.Menu menu)


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