Changeset - r15552:db706a5de04a
[Not reviewed]
master
0 2 0
alberth - 14 years ago 2010-07-26 13:03:40
alberth@openttd.org
(svn r20222) -Add: Add functions to compute the row in a scrolled widget.
2 files changed with 20 insertions and 2 deletions:
0 comments (0 inline, 0 general)
src/window.cpp
Show inline comments
 
@@ -86,18 +86,34 @@ WindowDesc::~WindowDesc()
 
 * @param clickpos    Vertical position of the mouse click.
 
 * @param widget      Widget number of the widget clicked in.
 
 * @param padding     Amount of empty space between the widget edge and the top of the first row.
 
 * @param line_height Height of a single row.
 
 * @param line_height Height of a single row. A negative value means using the vertical resize step of the widget.
 
 * @return Row number clicked at. If clicked at a wrong position, #INT_MAX is returned.
 
 * @note The widget does not know where a list printed at the widget ends, so below a list is not a wrong position.
 
 */
 
int Window::GetRowFromWidget(int clickpos, int widget, int padding, int line_height) const
 
{
 
	const NWidgetBase *wid = this->GetWidget<NWidgetBase>(widget);
 
	if (line_height < 0) line_height = wid->resize_y;
 
	if (clickpos < (int)wid->pos_y + padding) return INT_MAX;
 
	return (clickpos - (int)wid->pos_y - padding) / line_height;
 
}
 

	
 
/**
 
 * Compute the row of a scrolled widget that a user clicked in.
 
 * @param clickpos    Vertical position of the mouse click (without taking scrolling into account).
 
 * @param widget      Widget number of the widget clicked in.
 
 * @param padding     Amount of empty space between the widget edge and the top of the first row. Default value is \c 0.
 
 * @param line_height Height of a single row. A negative value means using the vertical resize step of the widget.
 
 * @return Row number clicked at. If clicked at a wrong position, #INT_MAX is returned.
 
 */
 
int Scrollbar::GetScrolledRowFromWidget(int clickpos, const Window * const w, int widget, int padding, int line_height) const
 
{
 
	uint pos = w->GetRowFromWidget(clickpos, widget, padding, line_height);
 
	if (pos != INT_MAX) pos += this->GetPosition();
 
	return (pos >= this->GetCount()) ? INT_MAX : pos;
 
}
 

	
 
/**
 
 * Set capacity of visible elements from the size and resize properties of a widget.
 
 * @param w       Window.
 
 * @param widget  Widget with size and resize properties.
src/window_gui.h
Show inline comments
 
@@ -305,6 +305,8 @@ public:
 
			this->SetPosition(position - this->GetCapacity() + 1);
 
		}
 
	}
 

	
 
	int GetScrolledRowFromWidget(int clickpos, const Window * const w, int widget, int padding = 0, int line_height = -1) const;
 
};
 

	
 
/**
 
@@ -528,7 +530,7 @@ public:
 
	bool SetFocusedWidget(byte widget_index);
 

	
 
	void HandleButtonClick(byte widget);
 
	int GetRowFromWidget(int clickpos, int widget, int padding, int line_height) const;
 
	int GetRowFromWidget(int clickpos, int widget, int padding, int line_height = -1) const;
 

	
 
	void RaiseButtons(bool autoraise = false);
 
	void CDECL SetWidgetsDisabledState(bool disab_stat, int widgets, ...);
0 comments (0 inline, 0 general)