forked from mirror/OpenTTD
GetScrolled*FromWidget took line height from the widget's resize_y value, however not all widgets are resizable, resulting in a division-by-zero. Allow passing line height explicitly in cases where a widget is not resizable.
This commit is contained in:
@@ -788,7 +788,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
int GetScrolledRowFromWidget(int clickpos, const Window * const w, int widget, int padding = 0) const;
|
||||
int GetScrolledRowFromWidget(int clickpos, const Window * const w, int widget, int padding = 0, int line_height = -1) const;
|
||||
|
||||
/**
|
||||
* Return an iterator pointing to the element of a scrolled widget that a user clicked in.
|
||||
@@ -797,13 +797,14 @@ public:
|
||||
* @param w The window the click was in.
|
||||
* @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 Iterator to the element clicked at. If clicked at a wrong position, returns as interator to the end of the container.
|
||||
*/
|
||||
template <typename Tcontainer>
|
||||
typename Tcontainer::iterator GetScrolledItemFromWidget(Tcontainer &container, int clickpos, const Window * const w, int widget, int padding = 0) const
|
||||
typename Tcontainer::iterator GetScrolledItemFromWidget(Tcontainer &container, int clickpos, const Window * const w, int widget, int padding = 0, int line_height = -1) const
|
||||
{
|
||||
assert(this->GetCount() == container.size()); // Scrollbar and container size must match.
|
||||
int row = this->GetScrolledRowFromWidget(clickpos, w, widget, padding);
|
||||
int row = this->GetScrolledRowFromWidget(clickpos, w, widget, padding, line_height);
|
||||
if (row == INT_MAX) return std::end(container);
|
||||
|
||||
typename Tcontainer::iterator it = std::begin(container);
|
||||
|
Reference in New Issue
Block a user