Quellcode durchsuchen

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 vor 2 Jahren
Ursprung
Commit
234ae3a2ae
2 geänderte Dateien mit 12 neuen und 1 gelöschten Zeilen
  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;