summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/widget.cpp30
-rw-r--r--src/widget_type.h5
-rw-r--r--src/window.cpp6
-rw-r--r--src/window_gui.h3
4 files changed, 9 insertions, 35 deletions
diff --git a/src/widget.cpp b/src/widget.cpp
index 698217670..b1cc96745 100644
--- a/src/widget.cpp
+++ b/src/widget.cpp
@@ -75,7 +75,7 @@ static void ScrollbarClickPositioning(Window *w, NWidgetScrollbar *nw, int x, in
{
int pos;
bool rtl = false;
- Scrollbar *sb = nw->GetScrollbar(w);
+ Scrollbar *sb = nw;
switch (nw->type) {
case WWT_SCROLLBAR:
@@ -1670,7 +1670,7 @@ void Scrollbar::SetCapacityFromWidget(Window *w, int widget, int padding)
* @param colour Colour of the scrollbar.
* @param index Index in the widget array used by the window system.
*/
-NWidgetScrollbar::NWidgetScrollbar(WidgetType tp, Colours colour, int index) : NWidgetCore(tp, colour, 1, 1, 0x0, STR_NULL)
+NWidgetScrollbar::NWidgetScrollbar(WidgetType tp, Colours colour, int index) : NWidgetCore(tp, colour, 1, 1, 0x0, STR_NULL), Scrollbar(tp != WWT_HSCROLLBAR)
{
assert(tp == WWT_HSCROLLBAR || tp == WWT_SCROLLBAR || tp == WWT_SCROLL2BAR);
this->SetIndex(index);
@@ -1722,21 +1722,21 @@ void NWidgetScrollbar::Draw(const Window *w)
case WWT_HSCROLLBAR:
DrawHorizontalScrollbar(r, this->colour, (w->flags4 & (WF_SCROLL_UP | WF_HSCROLL)) == (WF_SCROLL_UP | WF_HSCROLL),
w->scrolling_scrollbar == this->index,
- (w->flags4 & (WF_SCROLL_DOWN | WF_HSCROLL)) == (WF_SCROLL_DOWN | WF_HSCROLL), this->GetScrollbar(w));
+ (w->flags4 & (WF_SCROLL_DOWN | WF_HSCROLL)) == (WF_SCROLL_DOWN | WF_HSCROLL), this);
break;
case WWT_SCROLLBAR:
assert(this->widget_data == 0);
DrawVerticalScrollbar(r, this->colour, (w->flags4 & (WF_SCROLL_UP | WF_HSCROLL | WF_SCROLL2)) == WF_SCROLL_UP,
w->scrolling_scrollbar == this->index,
- (w->flags4 & (WF_SCROLL_DOWN | WF_HSCROLL | WF_SCROLL2)) == WF_SCROLL_DOWN, this->GetScrollbar(w));
+ (w->flags4 & (WF_SCROLL_DOWN | WF_HSCROLL | WF_SCROLL2)) == WF_SCROLL_DOWN, this);
break;
case WWT_SCROLL2BAR:
assert(this->widget_data == 0);
DrawVerticalScrollbar(r, this->colour, (w->flags4 & (WF_SCROLL_UP | WF_HSCROLL | WF_SCROLL2)) == (WF_SCROLL_UP | WF_SCROLL2),
w->scrolling_scrollbar == this->index,
- (w->flags4 & (WF_SCROLL_DOWN | WF_HSCROLL | WF_SCROLL2)) == (WF_SCROLL_DOWN | WF_SCROLL2), this->GetScrollbar(w));
+ (w->flags4 & (WF_SCROLL_DOWN | WF_HSCROLL | WF_SCROLL2)) == (WF_SCROLL_DOWN | WF_SCROLL2), this);
break;
default: NOT_REACHED();
@@ -1747,26 +1747,6 @@ void NWidgetScrollbar::Draw(const Window *w)
}
}
-const Scrollbar *NWidgetScrollbar::GetScrollbar(const Window *w) const
-{
- switch (this->type) {
- case WWT_HSCROLLBAR: return &w->old_hscroll;
- case WWT_SCROLLBAR: return &w->old_vscroll;
- case WWT_SCROLL2BAR: return &w->old_vscroll2;
- default: NOT_REACHED();
- }
-}
-
-Scrollbar *NWidgetScrollbar::GetScrollbar(Window *w) const
-{
- switch (this->type) {
- case WWT_HSCROLLBAR: return &w->old_hscroll;
- case WWT_SCROLLBAR: return &w->old_vscroll;
- case WWT_SCROLL2BAR: return &w->old_vscroll2;
- default: NOT_REACHED();
- }
-}
-
/** Reset the cached dimensions. */
/* static */ void NWidgetLeaf::InvalidateDimensionCache()
{
diff --git a/src/widget_type.h b/src/widget_type.h
index 7b5597ed7..961a6c4c9 100644
--- a/src/widget_type.h
+++ b/src/widget_type.h
@@ -632,15 +632,12 @@ public:
* Also assign the scrollbar to other widgets using #SetScrollbar() to make the mousewheel work.
* @ingroup NestedWidgets
*/
-class NWidgetScrollbar : public NWidgetCore {
+class NWidgetScrollbar : public NWidgetCore, public Scrollbar {
public:
NWidgetScrollbar(WidgetType tp, Colours colour, int index);
/* virtual */ void SetupSmallestSize(Window *w, bool init_array);
/* virtual */ void Draw(const Window *w);
-
- const Scrollbar *GetScrollbar(const Window *w) const;
- Scrollbar *GetScrollbar(Window *w) const;
};
/**
diff --git a/src/window.cpp b/src/window.cpp
index 469e0c26b..09134b270 100644
--- a/src/window.cpp
+++ b/src/window.cpp
@@ -104,7 +104,7 @@ int Window::GetRowFromWidget(int clickpos, int widget, int padding, int line_hei
*/
const Scrollbar *Window::GetScrollbar(uint widnum) const
{
- return this->GetWidget<NWidgetScrollbar>(widnum)->GetScrollbar(this);
+ return this->GetWidget<NWidgetScrollbar>(widnum);
}
/**
@@ -114,7 +114,7 @@ const Scrollbar *Window::GetScrollbar(uint widnum) const
*/
Scrollbar *Window::GetScrollbar(uint widnum)
{
- return this->GetWidget<NWidgetScrollbar>(widnum)->GetScrollbar(this);
+ return this->GetWidget<NWidgetScrollbar>(widnum);
}
@@ -1304,7 +1304,7 @@ void Window::InitNested(const WindowDesc *desc, WindowNumber window_number)
}
/** Empty constructor, initialization has been moved to #InitNested() called from the constructor of the derived class. */
-Window::Window() : old_hscroll(false), old_vscroll(true), old_vscroll2(true), scrolling_scrollbar(-1)
+Window::Window() : scrolling_scrollbar(-1)
{
}
diff --git a/src/window_gui.h b/src/window_gui.h
index 852ec5977..6c9c688bf 100644
--- a/src/window_gui.h
+++ b/src/window_gui.h
@@ -256,9 +256,6 @@ public:
int width; ///< width of the window (number of pixels to the right in x direction)
int height; ///< Height of the window (number of pixels down in y direction)
- Scrollbar old_hscroll; ///< Horizontal scroll bar
- Scrollbar old_vscroll; ///< First vertical scroll bar
- Scrollbar old_vscroll2; ///< Second vertical scroll bar
ResizeInfo resize; ///< Resize information
Owner owner; ///< The owner of the content shown in this window. Company colour is acquired from this variable.