1
0
Fork 0

(svn r19904) -Codechange: Make EventState usable outside Window context.

release/1.1
alberth 2010-05-30 12:06:18 +00:00
parent fc82d9cd77
commit 113f3ef0eb
4 changed files with 13 additions and 13 deletions

View File

@ -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;
} }
} }

View File

@ -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 {

View File

@ -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;
} }
} }

View File

@ -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);