ListCursor: store only height, move width to class ListWindow
authorMax Kellermann <max@musicpd.org>
Wed, 10 Apr 2019 08:22:53 +0000 (10:22 +0200)
committerMax Kellermann <max@musicpd.org>
Wed, 10 Apr 2019 08:22:53 +0000 (10:22 +0200)
src/ListCursor.cxx
src/ListCursor.hxx
src/ListWindow.cxx
src/ListWindow.hxx
src/SongPage.cxx

index 22a3a53..331f021 100644 (file)
@@ -50,9 +50,9 @@ ListCursor::CheckSelected() noexcept
 }
 
 void
-ListCursor::Resize(Size _size) noexcept
+ListCursor::SetHeight(unsigned _height) noexcept
 {
-       size = _size;
+       height = _height;
        CheckOrigin();
 }
 
index 9246456..975c1e7 100644 (file)
@@ -20,7 +20,6 @@
 #ifndef LIST_CURSOR_HXX
 #define LIST_CURSOR_HXX
 
-#include "Size.hxx"
 #include "util/Compiler.h"
 
 /**
@@ -77,7 +76,7 @@ struct ListWindowRange {
 };
 
 class ListCursor {
-       Size size;
+       unsigned height;
 
        /**
         * Number of items in this list.
@@ -100,15 +99,11 @@ class ListCursor {
        bool hide_cursor = false;
 
 public:
-       explicit constexpr ListCursor(Size _size) noexcept
-               :size(_size) {}
-
-       constexpr const Size &GetSize() const noexcept {
-               return size;
-       }
+       explicit constexpr ListCursor(unsigned _height) noexcept
+               :height(_height) {}
 
        constexpr unsigned GetHeight() const noexcept {
-               return size.height;
+               return height;
        }
 
        constexpr unsigned GetOrigin() const noexcept {
@@ -173,7 +168,7 @@ public:
        /** reset a list window (selected=0, start=0) */
        void Reset() noexcept;
 
-       void Resize(Size _size) noexcept;
+       void SetHeight(unsigned _height) noexcept;
 
        void SetLength(unsigned length) noexcept;
 
index f858a39..2e481e8 100644 (file)
@@ -55,7 +55,7 @@ ListWindow::Paint(const ListRenderer &renderer) const noexcept
                bool is_selected = show_cursor &&
                        range.Contains(j);
 
-               renderer.PaintListItem(w, j, i, GetSize().width, is_selected);
+               renderer.PaintListItem(w, j, i, width, is_selected);
        }
 
        row_color_end(w);
index 2adc7d6..450c3e7 100644 (file)
@@ -21,6 +21,7 @@
 #define LIST_WINDOW_HXX
 
 #include "ListCursor.hxx"
+#include "Size.hxx"
 #include "config.h"
 
 #include <curses.h>
@@ -32,9 +33,20 @@ class ListRenderer;
 class ListWindow : public ListCursor {
        WINDOW *const w;
 
+       unsigned width;
+
 public:
        ListWindow(WINDOW *_w, Size _size) noexcept
-               :ListCursor(_size), w(_w) {}
+               :ListCursor(_size.height), w(_w), width(_size.width) {}
+
+       unsigned GetWidth() const noexcept {
+               return width;
+       }
+
+       void Resize(Size _size) noexcept {
+               SetHeight(_size.height);
+               width = _size.width;
+       }
 
        void Refresh() const noexcept {
                wrefresh(w);
index 6d4141b..76ecba9 100644 (file)
@@ -223,7 +223,7 @@ SongPage::AppendLine(const char *label, const char *value_utf8,
 
        /* +2 for ': ' */
        label_col += 2;
-       const int value_col = lw.GetSize().width - label_col;
+       const int value_col = lw.GetWidth() - label_col;
        /* calculate the number of required linebreaks */
        const Utf8ToLocale value_locale(value_utf8);
        const char *value = value_locale.c_str();