mirror of https://github.com/OpenTTD/OpenTTD
(svn r24744) -Codechange: Handle clicking on editboxed also via QueryString.
parent
c283a41248
commit
c8c040d057
|
@ -811,6 +811,14 @@ void QueryString::DrawEditBox(const Window *w, int wid) const
|
||||||
_cur_dpi = old_dpi;
|
_cur_dpi = old_dpi;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QueryString::ClickEditBox(Window *w, Point pt, int wid, int click_count, bool focus_changed)
|
||||||
|
{
|
||||||
|
if (!focus_changed && w->window_class != WC_OSK) {
|
||||||
|
/* Open the OSK window if clicked on an edit box, while not changing focus */
|
||||||
|
ShowOnScreenKeyboard(w, wid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** Class for the string query window. */
|
/** Class for the string query window. */
|
||||||
struct QueryStringWindow : public Window
|
struct QueryStringWindow : public Window
|
||||||
{
|
{
|
||||||
|
|
|
@ -65,6 +65,7 @@ private:
|
||||||
bool HasEditBoxFocus(const Window *w, int wid) const;
|
bool HasEditBoxFocus(const Window *w, int wid) const;
|
||||||
public:
|
public:
|
||||||
void DrawEditBox(const Window *w, int wid) const;
|
void DrawEditBox(const Window *w, int wid) const;
|
||||||
|
void ClickEditBox(Window *w, Point pt, int wid, int click_count, bool focus_changed);
|
||||||
void HandleEditBox(Window *w, int wid);
|
void HandleEditBox(Window *w, int wid);
|
||||||
HandleEditBoxResult HandleEditBoxKey(Window *w, int wid, uint16 key, uint16 keycode, EventState &state);
|
HandleEditBoxResult HandleEditBoxKey(Window *w, int wid, uint16 key, uint16 keycode, EventState &state);
|
||||||
};
|
};
|
||||||
|
|
|
@ -463,20 +463,19 @@ static void DispatchLeftClickEvent(Window *w, int x, int y, int click_count)
|
||||||
|
|
||||||
if ((widget_type & ~WWB_PUSHBUTTON) < WWT_LAST && (widget_type & WWB_PUSHBUTTON)) w->HandleButtonClick(widget_index);
|
if ((widget_type & ~WWB_PUSHBUTTON) < WWT_LAST && (widget_type & WWB_PUSHBUTTON)) w->HandleButtonClick(widget_index);
|
||||||
|
|
||||||
|
Point pt = { x, y };
|
||||||
|
|
||||||
switch (widget_type) {
|
switch (widget_type) {
|
||||||
case NWID_VSCROLLBAR:
|
case NWID_VSCROLLBAR:
|
||||||
case NWID_HSCROLLBAR:
|
case NWID_HSCROLLBAR:
|
||||||
ScrollbarClickHandler(w, nw, x, y);
|
ScrollbarClickHandler(w, nw, x, y);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WWT_EDITBOX:
|
case WWT_EDITBOX: {
|
||||||
if (!focused_widget_changed) { // Only open the OSK window if clicking on an already focused edit box
|
QueryString *query = w->GetQueryString(widget_index);
|
||||||
/* Open the OSK window if clicked on an edit box */
|
if (query != NULL) query->ClickEditBox(w, pt, widget_index, click_count, focused_widget_changed);
|
||||||
if (w->querystrings.Contains(widget_index)) {
|
|
||||||
ShowOnScreenKeyboard(w, widget_index);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case WWT_CLOSEBOX: // 'X'
|
case WWT_CLOSEBOX: // 'X'
|
||||||
delete w;
|
delete w;
|
||||||
|
@ -520,7 +519,6 @@ static void DispatchLeftClickEvent(Window *w, int x, int y, int click_count)
|
||||||
Game::NewEvent(new ScriptEventWindowWidgetClick((ScriptWindow::WindowClass)w->window_class, w->window_number, widget_index));
|
Game::NewEvent(new ScriptEventWindowWidgetClick((ScriptWindow::WindowClass)w->window_class, w->window_number, widget_index));
|
||||||
}
|
}
|
||||||
|
|
||||||
Point pt = { x, y };
|
|
||||||
w->OnClick(pt, widget_index, click_count);
|
w->OnClick(pt, widget_index, click_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue