From 297c521b6f4d43bad62fe443d930c78b9f4ec267 Mon Sep 17 00:00:00 2001 From: alberth Date: Sun, 26 Jul 2009 13:19:23 +0000 Subject: [PATCH] (svn r16961) -Codechange: Moving some methods up in the class hierarchy to avoid code duplication. --- src/widget.cpp | 27 ++++++++++----------------- src/widget_type.h | 6 ++---- 2 files changed, 12 insertions(+), 21 deletions(-) diff --git a/src/widget.cpp b/src/widget.cpp index 7a3371c2b3..4ece7f3a55 100644 --- a/src/widget.cpp +++ b/src/widget.cpp @@ -973,7 +973,7 @@ void NWidgetBase::Invalidate(const Window *w) const } /** - * @fn NWidgetCore *GetWidgetFromPos(int x, int y) + * @fn NWidgetCore *NWidgetBase::GetWidgetFromPos(int x, int y) * Retrieve a widget by its position. * @param x Horizontal position relative to the left edge of the window. * @param y Vertical position relative to the top edge of the window. @@ -981,11 +981,14 @@ void NWidgetBase::Invalidate(const Window *w) const */ /** - * @fn NWidgetBase *GetWidgetOfType(WidgetType tp) * Retrieve a widget by its type. * @param tp Widget type to search for. * @return Returns the first widget of the specified type, or \c NULL if no widget can be found. */ +NWidgetBase *NWidgetBase::GetWidgetOfType(WidgetType tp) +{ + return (this->type == tp) ? this : NULL; +} /** * Constructor for resizable nested widgets. @@ -1109,6 +1112,11 @@ void NWidgetCore::StoreWidgets(Widget *widgets, int length, bool left_moving, bo w->tooltips = this->tool_tip; } +NWidgetCore *NWidgetCore::GetWidgetFromPos(int x, int y) +{ + return (IsInsideBS(x, this->pos_x, this->current_x) && IsInsideBS(y, this->pos_y, this->current_y)) ? this : NULL; +} + /** * @fn Scrollbar *NWidgetCore::FindScrollbar(Window *w, bool allow_next = true) * Find the scrollbar of the widget through the Window::nested_array. @@ -1200,7 +1208,6 @@ static inline uint ComputeOffset(uint space, uint max_space) return (max_space - space) / 2; } - /** * Widgets stacked on top of each other. * @param tp Kind of stacking, must be either #NWID_SELECTION or #NWID_LAYERED. @@ -1615,11 +1622,6 @@ NWidgetCore *NWidgetSpacer::GetWidgetFromPos(int x, int y) return NULL; } -NWidgetBase *NWidgetSpacer::GetWidgetOfType(WidgetType tp) -{ - return (this->type == tp) ? this : NULL; -} - /** * Constructor parent nested widgets. * @param tp Type of parent widget. @@ -2152,10 +2154,6 @@ void NWidgetLeaf::Invalidate(const Window *w) const NWidgetBase::Invalidate(w); } -NWidgetCore *NWidgetLeaf::GetWidgetFromPos(int x, int y) -{ - return (IsInsideBS(x, this->pos_x, this->current_x) && IsInsideBS(y, this->pos_y, this->current_y)) ? this : NULL; -} Scrollbar *NWidgetLeaf::FindScrollbar(Window *w, bool allow_next) { @@ -2169,11 +2167,6 @@ Scrollbar *NWidgetLeaf::FindScrollbar(Window *w, bool allow_next) return NULL; } -NWidgetBase *NWidgetLeaf::GetWidgetOfType(WidgetType tp) -{ - return (this->type == tp) ? this : NULL; -} - /** * Intialize nested widget tree and convert to widget array. * @param nwid Nested widget tree. diff --git a/src/widget_type.h b/src/widget_type.h index 20c89e6e6c..58c9c580be 100644 --- a/src/widget_type.h +++ b/src/widget_type.h @@ -182,7 +182,7 @@ public: virtual void StoreWidgets(Widget *widgets, int length, bool left_moving, bool top_moving, bool rtl) = 0; virtual NWidgetCore *GetWidgetFromPos(int x, int y) = 0; - virtual NWidgetBase *GetWidgetOfType(WidgetType tp) = 0; + virtual NWidgetBase *GetWidgetOfType(WidgetType tp); /** * Set additional space (padding) around the widget. @@ -295,6 +295,7 @@ public: inline bool IsDisabled(); void StoreWidgets(Widget *widgets, int length, bool left_moving, bool top_moving, bool rtl); + /* virtual */ NWidgetCore *GetWidgetFromPos(int x, int y); virtual Scrollbar *FindScrollbar(Window *w, bool allow_next = true) = 0; @@ -444,7 +445,6 @@ public: /* virtual */ void Draw(const Window *w); /* virtual */ void Invalidate(const Window *w) const; /* virtual */ NWidgetCore *GetWidgetFromPos(int x, int y); - /* virtual */ NWidgetBase *GetWidgetOfType(WidgetType tp); }; /** Nested widget with a child. @@ -480,8 +480,6 @@ public: /* virtual */ void SetupSmallestSize(Window *w, bool init_array); /* virtual */ void Draw(const Window *w); /* virtual */ void Invalidate(const Window *w) const; - /* virtual */ NWidgetCore *GetWidgetFromPos(int x, int y); - /* virtual */ NWidgetBase *GetWidgetOfType(WidgetType tp); /* virtual */ Scrollbar *FindScrollbar(Window *w, bool allow_next = true); static void InvalidateDimensionCache();