Page: add virtual method PaintStatusBarOverride()
authorMax Kellermann <max@musicpd.org>
Wed, 10 Apr 2019 08:30:05 +0000 (10:30 +0200)
committerMax Kellermann <max@musicpd.org>
Wed, 10 Apr 2019 08:30:05 +0000 (10:30 +0200)
src/Page.hxx
src/screen_paint.cxx

index f301c96..a4068a1 100644 (file)
@@ -33,6 +33,7 @@
 
 enum class Command : unsigned;
 struct mpdclient;
+struct Window;
 
 class Page {
        Size last_size{0, 0};
@@ -85,6 +86,18 @@ public:
        virtual void OnClose() noexcept {}
        virtual void OnResize(Size size) noexcept = 0;
        virtual void Paint() const noexcept = 0;
+
+       /**
+        * Give this object a chance to override painting the status bar.
+        *
+        * @return true if the status bar was painted, false if this
+        * object is not interested in overriding the status bar
+        * contents
+        */
+       virtual bool PaintStatusBarOverride(const Window &) const noexcept {
+               return false;
+       }
+
        virtual void Update(struct mpdclient &, unsigned) noexcept {}
 
        /**
index acc053d..26ea75d 100644 (file)
@@ -45,7 +45,9 @@ ScreenManager::Paint(bool main_dirty)
        /* paint the bottom window */
 
        progress_bar.Paint();
-       status_bar.Paint();
+
+       if (!current_page->second->PaintStatusBarOverride(status_bar.GetWindow()))
+               status_bar.Paint();
 
        /* paint the main window */