diff options
-rw-r--r-- | src/widget.cpp | 30 | ||||
-rw-r--r-- | src/widget_type.h | 33 |
2 files changed, 32 insertions, 31 deletions
diff --git a/src/widget.cpp b/src/widget.cpp index 9a9c3094a..350dcde80 100644 --- a/src/widget.cpp +++ b/src/widget.cpp @@ -707,26 +707,6 @@ NWidgetBase::NWidgetBase(WidgetType tp) : ZeroedMemoryAllocator() */ /** - * Store size and position. - * @param sizing Type of resizing to perform. - * @param x Horizontal offset of the widget relative to the left edge of the window. - * @param y Vertical offset of the widget relative to the top edge of the window. - * @param given_width Width allocated to the widget. - * @param given_height Height allocated to the widget. - */ -inline void NWidgetBase::StoreSizePosition(SizingType sizing, uint x, uint y, uint given_width, uint given_height) -{ - this->pos_x = x; - this->pos_y = y; - if (sizing == ST_SMALLEST) { - this->smallest_x = given_width; - this->smallest_y = given_height; - } - this->current_x = given_width; - this->current_y = given_height; -} - -/** * @fn void NWidgetBase::Draw(const Window *w) * Draw the widgets of the tree. * The function calls #Window::DrawWidget for each widget with a non-negative index, after the widget itself is painted. @@ -820,7 +800,7 @@ void NWidgetResizeBase::SetResize(uint resize_x, uint resize_y) void NWidgetResizeBase::AssignSizePosition(SizingType sizing, uint x, uint y, uint given_width, uint given_height, bool rtl) { - StoreSizePosition(sizing, x, y, given_width, given_height); + this->StoreSizePosition(sizing, x, y, given_width, given_height); } /** @@ -1001,7 +981,7 @@ void NWidgetStacked::SetupSmallestSize(Window *w, bool init_array) void NWidgetStacked::AssignSizePosition(SizingType sizing, uint x, uint y, uint given_width, uint given_height, bool rtl) { assert(given_width >= this->smallest_x && given_height >= this->smallest_y); - StoreSizePosition(sizing, x, y, given_width, given_height); + this->StoreSizePosition(sizing, x, y, given_width, given_height); if (this->shown_plane >= SZSP_BEGIN) return; @@ -1177,7 +1157,7 @@ void NWidgetHorizontal::AssignSizePosition(SizingType sizing, uint x, uint y, ui assert(given_width >= this->smallest_x && given_height >= this->smallest_y); uint additional_length = given_width - this->smallest_x; // Additional width given to us. - StoreSizePosition(sizing, x, y, given_width, given_height); + this->StoreSizePosition(sizing, x, y, given_width, given_height); /* In principle, the additional horizontal space is distributed evenly over the available resizable childs. Due to step sizes, this may not always be feasible. * To make resizing work as good as possible, first childs with biggest step sizes are done. These may get less due to rounding down. @@ -1329,7 +1309,7 @@ void NWidgetVertical::AssignSizePosition(SizingType sizing, uint x, uint y, uint assert(given_width >= this->smallest_x && given_height >= this->smallest_y); int additional_length = given_height - this->smallest_y; // Additional height given to us. - StoreSizePosition(sizing, x, y, given_width, given_height); + this->StoreSizePosition(sizing, x, y, given_width, given_height); /* Like the horizontal container, the vertical container also distributes additional height evenly, starting with the childs with the biggest resize steps. * It also stores computed widths and heights into current_x and current_y values of the child. @@ -1528,7 +1508,7 @@ void NWidgetBackground::SetupSmallestSize(Window *w, bool init_array) void NWidgetBackground::AssignSizePosition(SizingType sizing, uint x, uint y, uint given_width, uint given_height, bool rtl) { - StoreSizePosition(sizing, x, y, given_width, given_height); + this->StoreSizePosition(sizing, x, y, given_width, given_height); if (this->child != NULL) { uint x_offset = (rtl ? this->child->padding_right : this->child->padding_left); diff --git a/src/widget_type.h b/src/widget_type.h index 29cb13acd..fcb8aa4d0 100644 --- a/src/widget_type.h +++ b/src/widget_type.h @@ -137,7 +137,7 @@ public: * @param bottom Amount of additional space below the widget. * @param left Amount of additional space left of the widget. */ - inline void SetPadding(uint8 top, uint8 right, uint8 bottom, uint8 left) + FORCEINLINE void SetPadding(uint8 top, uint8 right, uint8 bottom, uint8 left) { this->padding_top = top; this->padding_right = right; @@ -145,8 +145,8 @@ public: this->padding_left = left; }; - inline uint GetHorizontalStepSize(SizingType sizing) const; - inline uint GetVerticalStepSize(SizingType sizing) const; + FORCEINLINE uint GetHorizontalStepSize(SizingType sizing) const; + FORCEINLINE uint GetVerticalStepSize(SizingType sizing) const; virtual void Draw(const Window *w) = 0; virtual void SetDirty(const Window *w) const; @@ -177,14 +177,14 @@ public: uint8 padding_left; ///< Paddings added to the left of the widget. Managed by parent container widget. protected: - inline void StoreSizePosition(SizingType sizing, uint x, uint y, uint given_width, uint given_height); + FORCEINLINE void StoreSizePosition(SizingType sizing, uint x, uint y, uint given_width, uint given_height); }; /** * Get the horizontal sizing step. * @param sizing Type of resize being performed. */ -inline uint NWidgetBase::GetHorizontalStepSize(SizingType sizing) const +FORCEINLINE uint NWidgetBase::GetHorizontalStepSize(SizingType sizing) const { return (sizing == ST_RESIZE) ? this->resize_x : this->fill_x; } @@ -193,11 +193,32 @@ inline uint NWidgetBase::GetHorizontalStepSize(SizingType sizing) const * Get the vertical sizing step. * @param sizing Type of resize being performed. */ -inline uint NWidgetBase::GetVerticalStepSize(SizingType sizing) const +FORCEINLINE uint NWidgetBase::GetVerticalStepSize(SizingType sizing) const { return (sizing == ST_RESIZE) ? this->resize_y : this->fill_y; } +/** + * Store size and position. + * @param sizing Type of resizing to perform. + * @param x Horizontal offset of the widget relative to the left edge of the window. + * @param y Vertical offset of the widget relative to the top edge of the window. + * @param given_width Width allocated to the widget. + * @param given_height Height allocated to the widget. + */ +FORCEINLINE void NWidgetBase::StoreSizePosition(SizingType sizing, uint x, uint y, uint given_width, uint given_height) +{ + this->pos_x = x; + this->pos_y = y; + if (sizing == ST_SMALLEST) { + this->smallest_x = given_width; + this->smallest_y = given_height; + } + this->current_x = given_width; + this->current_y = given_height; +} + + /** Base class for a resizable nested widget. * @ingroup NestedWidgets */ class NWidgetResizeBase : public NWidgetBase { |