mirror of https://github.com/OpenTTD/OpenTTD
(svn r19904) -Codechange: Make EventState usable outside Window context.
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;
|
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;
|
if (!QueryString::HasEditBoxFocus(w, wid)) return HEBR_NOT_FOCUSED;
|
||||||
|
|
||||||
state = Window::ES_HANDLED;
|
state = ES_HANDLED;
|
||||||
|
|
||||||
switch (keycode) {
|
switch (keycode) {
|
||||||
case WKC_ESC: return HEBR_CANCEL;
|
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 (IsValidChar(key, this->afilter)) {
|
||||||
if (InsertTextBufferChar(&this->text, key)) w->SetWidgetDirty(wid);
|
if (InsertTextBufferChar(&this->text, key)) w->SetWidgetDirty(wid);
|
||||||
} else {
|
} else {
|
||||||
state = Window::ES_NOT_HANDLED;
|
state = ES_NOT_HANDLED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -56,7 +56,7 @@ private:
|
||||||
public:
|
public:
|
||||||
void DrawEditBox(Window *w, int wid);
|
void DrawEditBox(Window *w, int wid);
|
||||||
void HandleEditBox(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 {
|
struct QueryStringBaseWindow : public Window, public QueryString {
|
||||||
|
|
|
@ -1938,14 +1938,14 @@ void HandleKeypress(uint32 raw_key)
|
||||||
/* Check if the focused window has a focused editbox */
|
/* Check if the focused window has a focused editbox */
|
||||||
if (EditBoxInGlobalFocus()) {
|
if (EditBoxInGlobalFocus()) {
|
||||||
/* All input will in this case go to the focused window */
|
/* 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. */
|
/* Call the event, start with the uppermost window, but ignore the toolbar. */
|
||||||
Window *w;
|
Window *w;
|
||||||
FOR_ALL_WINDOWS_FROM_FRONT(w) {
|
FOR_ALL_WINDOWS_FROM_FRONT(w) {
|
||||||
if (w->window_class == WC_MAIN_TOOLBAR) continue;
|
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);
|
w = FindWindowById(WC_MAIN_TOOLBAR, 0);
|
||||||
|
@ -1961,7 +1961,7 @@ void HandleCtrlChanged()
|
||||||
/* Call the event, start with the uppermost window. */
|
/* Call the event, start with the uppermost window. */
|
||||||
Window *w;
|
Window *w;
|
||||||
FOR_ALL_WINDOWS_FROM_FRONT(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 "tile_type.h"
|
||||||
#include "widget_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
|
* Flags to describe the look of the frame
|
||||||
*/
|
*/
|
||||||
|
@ -334,12 +340,6 @@ struct ViewportData : ViewPort {
|
||||||
* Data structure for an opened window
|
* Data structure for an opened window
|
||||||
*/
|
*/
|
||||||
struct Window : ZeroedMemoryAllocator {
|
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:
|
protected:
|
||||||
void InitializeData(const WindowDesc *desc, WindowNumber window_number);
|
void InitializeData(const WindowDesc *desc, WindowNumber window_number);
|
||||||
void InitializePositionSize(int x, int y, int min_width, int min_height);
|
void InitializePositionSize(int x, int y, int min_width, int min_height);
|
||||||
|
|
Loading…
Reference in New Issue