mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-06 14:27:16 +00:00
(svn r19904) -Codechange: Make EventState usable outside Window context.
This commit is contained in:
parent
fc82d9cd77
commit
113f3ef0eb
@ -1158,11 +1158,11 @@ bool QueryString::HasEditBoxFocus(const Window *w, int wid) const
|
||||
return w->parent->nested_focus != NULL && w->parent->nested_focus->type == WWT_EDITBOX;
|
||||
}
|
||||
|
||||
HandleEditBoxResult QueryString::HandleEditBoxKey(Window *w, int wid, uint16 key, uint16 keycode, Window::EventState &state)
|
||||
HandleEditBoxResult QueryString::HandleEditBoxKey(Window *w, int wid, uint16 key, uint16 keycode, EventState &state)
|
||||
{
|
||||
if (!QueryString::HasEditBoxFocus(w, wid)) return HEBR_NOT_FOCUSED;
|
||||
|
||||
state = Window::ES_HANDLED;
|
||||
state = ES_HANDLED;
|
||||
|
||||
switch (keycode) {
|
||||
case WKC_ESC: return HEBR_CANCEL;
|
||||
@ -1196,7 +1196,7 @@ HandleEditBoxResult QueryString::HandleEditBoxKey(Window *w, int wid, uint16 key
|
||||
if (IsValidChar(key, this->afilter)) {
|
||||
if (InsertTextBufferChar(&this->text, key)) w->SetWidgetDirty(wid);
|
||||
} else {
|
||||
state = Window::ES_NOT_HANDLED;
|
||||
state = ES_NOT_HANDLED;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -56,7 +56,7 @@ private:
|
||||
public:
|
||||
void DrawEditBox(Window *w, int wid);
|
||||
void HandleEditBox(Window *w, int wid);
|
||||
HandleEditBoxResult HandleEditBoxKey(Window *w, int wid, uint16 key, uint16 keycode, Window::EventState &state);
|
||||
HandleEditBoxResult HandleEditBoxKey(Window *w, int wid, uint16 key, uint16 keycode, EventState &state);
|
||||
};
|
||||
|
||||
struct QueryStringBaseWindow : public Window, public QueryString {
|
||||
|
@ -1938,14 +1938,14 @@ void HandleKeypress(uint32 raw_key)
|
||||
/* Check if the focused window has a focused editbox */
|
||||
if (EditBoxInGlobalFocus()) {
|
||||
/* All input will in this case go to the focused window */
|
||||
if (_focused_window->OnKeyPress(key, keycode) == Window::ES_HANDLED) return;
|
||||
if (_focused_window->OnKeyPress(key, keycode) == ES_HANDLED) return;
|
||||
}
|
||||
|
||||
/* Call the event, start with the uppermost window, but ignore the toolbar. */
|
||||
Window *w;
|
||||
FOR_ALL_WINDOWS_FROM_FRONT(w) {
|
||||
if (w->window_class == WC_MAIN_TOOLBAR) continue;
|
||||
if (w->OnKeyPress(key, keycode) == Window::ES_HANDLED) return;
|
||||
if (w->OnKeyPress(key, keycode) == ES_HANDLED) return;
|
||||
}
|
||||
|
||||
w = FindWindowById(WC_MAIN_TOOLBAR, 0);
|
||||
@ -1961,7 +1961,7 @@ void HandleCtrlChanged()
|
||||
/* Call the event, start with the uppermost window. */
|
||||
Window *w;
|
||||
FOR_ALL_WINDOWS_FROM_FRONT(w) {
|
||||
if (w->OnCTRLStateChange() == Window::ES_HANDLED) return;
|
||||
if (w->OnCTRLStateChange() == ES_HANDLED) return;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -19,6 +19,12 @@
|
||||
#include "tile_type.h"
|
||||
#include "widget_type.h"
|
||||
|
||||
/** State of handling an event. */
|
||||
enum EventState {
|
||||
ES_HANDLED, ///< The passed event is handled.
|
||||
ES_NOT_HANDLED, ///< The passed event is not handled.
|
||||
};
|
||||
|
||||
/**
|
||||
* Flags to describe the look of the frame
|
||||
*/
|
||||
@ -334,12 +340,6 @@ struct ViewportData : ViewPort {
|
||||
* Data structure for an opened window
|
||||
*/
|
||||
struct Window : ZeroedMemoryAllocator {
|
||||
/** State whether an event is handled or not */
|
||||
enum EventState {
|
||||
ES_HANDLED, ///< The passed event is handled
|
||||
ES_NOT_HANDLED, ///< The passed event is not handled
|
||||
};
|
||||
|
||||
protected:
|
||||
void InitializeData(const WindowDesc *desc, WindowNumber window_number);
|
||||
void InitializePositionSize(int x, int y, int min_width, int min_height);
|
||||
|
Loading…
Reference in New Issue
Block a user