Browse Source

LibGUI: Allow buttons to control the behavior when their text changes

Some buttons control how their text is set in unique ways. For example,
GUI::ToolbarButton will set only its tooltip instead of its text if it
has an icon. So when the text changes, ToolbarButton will want to change
its tooltip instead.
Timothy Flynn 2 years ago
parent
commit
234ae3a2ae
2 changed files with 12 additions and 1 deletions
  1. 1 1
      Userland/Libraries/LibGUI/AbstractButton.h
  2. 11 0
      Userland/Libraries/LibGUI/Toolbar.cpp

+ 1 - 1
Userland/Libraries/LibGUI/AbstractButton.h

@@ -20,7 +20,7 @@ public:
 
     Function<void(bool)> on_checked;
 
-    void set_text(String);
+    virtual void set_text(String);
     String const& text() const { return m_text; }
 
     bool is_exclusive() const { return m_exclusive; }

+ 11 - 0
Userland/Libraries/LibGUI/Toolbar.cpp

@@ -59,6 +59,17 @@ private:
             set_text(action.text());
         set_button_style(Gfx::ButtonStyle::Coolbar);
     }
+
+    virtual void set_text(String text) override
+    {
+        auto const* action = this->action();
+        VERIFY(action);
+
+        set_tooltip(tooltip(*action));
+        if (!action->icon())
+            Button::set_text(move(text));
+    }
+
     String tooltip(Action const& action) const
     {
         StringBuilder builder;