Changeset - r9162:a4bf036ad6a4
[Not reviewed]
master
0 4 0
rubidium - 16 years ago 2008-05-09 15:27:00
rubidium@openttd.org
(svn r13025) -Codechange: remove the need for two WindowEvents.
4 files changed with 72 insertions and 117 deletions:
0 comments (0 inline, 0 general)
src/network/network_gui.cpp
Show inline comments
 
@@ -1480,8 +1480,6 @@ static Window *PopupClientList(Window *w
 
	// Save our client
 
	WP(w, menu_d).main_button = client_no;
 
	WP(w, menu_d).sel_index = 0;
 
	// We are a popup
 
	_popup_menu_active = true;
 

	
 
	return w;
 
}
 
@@ -1513,25 +1511,22 @@ static void ClientListPopupWndProc(Windo
 
			}
 
		} break;
 

	
 
		case WE_POPUPMENU_SELECT: {
 
		case WE_MOUSELOOP: {
 
			/* We selected an action */
 
			int index = (e->we.popupmenu.pt.y - w->top) / CLNWND_ROWSIZE;
 
			int index = (_cursor.pos.y - w->top) / CLNWND_ROWSIZE;
 

	
 
			if (index >= 0 && e->we.popupmenu.pt.y >= w->top) {
 
				HandleClientListPopupClick(index, WP(w, menu_d).main_button);
 
			}
 
			if (_left_button_down) {
 
				if (index == -1 || index == WP(w, menu_d).sel_index) return;
 

	
 
			DeleteWindowById(WC_TOOLBAR_MENU, 0);
 
		} break;
 
				WP(w, menu_d).sel_index = index;
 
				SetWindowDirty(w);
 
			} else {
 
				if (index >= 0 && _cursor.pos.y >= w->top) {
 
					HandleClientListPopupClick(index, WP(w, menu_d).main_button);
 
				}
 

	
 
		case WE_POPUPMENU_OVER: {
 
			/* Our mouse hoovers over an action? Select it! */
 
			int index = (e->we.popupmenu.pt.y - w->top) / CLNWND_ROWSIZE;
 

	
 
			if (index == -1 || index == WP(w, menu_d).sel_index) return;
 

	
 
			WP(w, menu_d).sel_index = index;
 
			SetWindowDirty(w);
 
				DeleteWindowById(WC_TOOLBAR_MENU, 0);
 
			}
 
		} break;
 
	}
 
}
src/toolbar_gui.cpp
Show inline comments
 
@@ -84,8 +84,11 @@ static Point GetToolbarDropdownPos(uint1
 
 * @param y Y coordinate of the position
 
 * @return Index number of the menu item, or \c -1 if no valid selection under position
 
 */
 
static int GetMenuItemIndex(const Window *w, int x, int y)
 
static int GetMenuItemIndex(const Window *w)
 
{
 
	int x = _cursor.pos.x;
 
	int y = _cursor.pos.y;
 

	
 
	if ((x -= w->left) >= 0 && x < w->width && (y -= w->top + 1) >= 0) {
 
		y /= 10;
 

	
 
@@ -1153,34 +1156,30 @@ static void MenuWndProc(Window *w, Windo
 
				return;
 
			}
 

	
 
		case WE_POPUPMENU_SELECT: {
 
			int index = GetMenuItemIndex(w, e->we.popupmenu.pt.x, e->we.popupmenu.pt.y);
 
		case WE_MOUSELOOP: {
 
			int index = GetMenuItemIndex(w);
 

	
 
			if (index < 0) {
 
				Window *w2 = FindWindowById(WC_MAIN_TOOLBAR,0);
 
				if (GetWidgetFromPos(w2, e->we.popupmenu.pt.x - w2->left, e->we.popupmenu.pt.y - w2->top) == WP(w, menu_d).main_button)
 
					index = WP(w, menu_d).sel_index;
 
			}
 

	
 
			int action_id = WP(w, menu_d).action_id;
 
			delete w;
 
			if (_left_button_down) {
 
				if (index == -1 || index == WP(w, menu_d).sel_index) return;
 

	
 
			if (index >= 0) {
 
				assert((uint)index <= lengthof(_menu_clicked_procs));
 
				_menu_clicked_procs[action_id](index);
 
			}
 

	
 
		} break;
 
				WP(w, menu_d).sel_index = index;
 
				w->SetDirty();
 
			} else {
 
				if (index < 0) {
 
					Window *w2 = FindWindowById(WC_MAIN_TOOLBAR,0);
 
					if (GetWidgetFromPos(w2, _cursor.pos.x - w2->left, _cursor.pos.y - w2->top) == WP(w, menu_d).main_button)
 
						index = WP(w, menu_d).sel_index;
 
				}
 

	
 
		case WE_POPUPMENU_OVER: {
 
			int index = GetMenuItemIndex(w, e->we.popupmenu.pt.x, e->we.popupmenu.pt.y);
 

	
 
			if (index == -1 || index == WP(w, menu_d).sel_index) return;
 
				int action_id = WP(w, menu_d).action_id;
 
				delete w;
 

	
 
			WP(w, menu_d).sel_index = index;
 
			w->SetDirty();
 
			return;
 
		}
 
				if (index >= 0) {
 
					assert((uint)index <= lengthof(_menu_clicked_procs));
 
					_menu_clicked_procs[action_id](index);
 
				}
 
			}
 
		} break;
 
	}
 
}
 

	
 
@@ -1262,8 +1261,6 @@ static Window *PopupMainToolbMenu(Window
 
	WP(w, menu_d).checked_items = 0;
 
	WP(w, menu_d).disabled_items = disabled_mask;
 

	
 
	_popup_menu_active = true;
 

	
 
	SndPlayFx(SND_15_BEEP);
 
	return w;
 
}
 
@@ -1350,51 +1347,48 @@ static void PlayerMenuWndProc(Window *w,
 
			return;
 
		}
 

	
 
		case WE_POPUPMENU_SELECT: {
 
			int index = GetMenuItemIndex(w, e->we.popupmenu.pt.x, e->we.popupmenu.pt.y);
 
			int action_id = WP(w, menu_d).action_id;
 
		case WE_MOUSELOOP: {
 
			int index = GetMenuItemIndex(w);
 

	
 
			/* We have a new entry at the top of the list of menu 9 when networking
 
			*  so keep that in count */
 
			if (_networking && WP(w, menu_d).main_button == 9) {
 
				if (index > 0) index = GetPlayerIndexFromMenu(index - 1) + 1;
 
			if (_left_button_down) {
 
				UpdatePlayerMenuHeight(w);
 
				/* We have a new entry at the top of the list of menu 9 when networking
 
				 * so keep that in count */
 
				if (_networking && WP(w, menu_d).main_button == 9) {
 
					if (index > 0) index = GetPlayerIndexFromMenu(index - 1) + 1;
 
				} else {
 
					index = GetPlayerIndexFromMenu(index);
 
				}
 

	
 
				if (index == -1 || index == WP(w, menu_d).sel_index) return;
 

	
 
				WP(w, menu_d).sel_index = index;
 
				w->SetDirty();
 
			} else {
 
				index = GetPlayerIndexFromMenu(index);
 
			}
 
				int action_id = WP(w, menu_d).action_id;
 

	
 
			if (index < 0) {
 
				Window *w2 = FindWindowById(WC_MAIN_TOOLBAR,0);
 
				if (GetWidgetFromPos(w2, e->we.popupmenu.pt.x - w2->left, e->we.popupmenu.pt.y - w2->top) == WP(w, menu_d).main_button)
 
					index = WP(w, menu_d).sel_index;
 
			}
 
				/* We have a new entry at the top of the list of menu 9 when networking
 
				 * so keep that in count */
 
				if (_networking && WP(w, menu_d).main_button == 9) {
 
					if (index > 0) index = GetPlayerIndexFromMenu(index - 1) + 1;
 
				} else {
 
					index = GetPlayerIndexFromMenu(index);
 
				}
 

	
 
			delete w;
 
				if (index < 0) {
 
					Window *w2 = FindWindowById(WC_MAIN_TOOLBAR,0);
 
					if (GetWidgetFromPos(w2, _cursor.pos.x - w2->left, _cursor.pos.y - w2->top) == WP(w, menu_d).main_button)
 
						index = WP(w, menu_d).sel_index;
 
				}
 

	
 
			if (index >= 0) {
 
				assert(index >= 0 && index < 30);
 
				_menu_clicked_procs[action_id](index);
 
				delete w;
 

	
 
				if (index >= 0) {
 
					assert(index >= 0 && index < 30);
 
					_menu_clicked_procs[action_id](index);
 
				}
 
			}
 
		} break;
 

	
 
		case WE_POPUPMENU_OVER: {
 
			int index;
 
			UpdatePlayerMenuHeight(w);
 
			index = GetMenuItemIndex(w, e->we.popupmenu.pt.x, e->we.popupmenu.pt.y);
 

	
 
			/* We have a new entry at the top of the list of menu 9 when networking
 
			* so keep that in count */
 
			if (_networking && WP(w, menu_d).main_button == 9) {
 
				if (index > 0) index = GetPlayerIndexFromMenu(index - 1) + 1;
 
			} else {
 
				index = GetPlayerIndexFromMenu(index);
 
			}
 

	
 
			if (index == -1 || index == WP(w, menu_d).sel_index) return;
 

	
 
			WP(w, menu_d).sel_index = index;
 
			w->SetDirty();
 
			return;
 
		}
 
	}
 
}
 

	
 
@@ -1426,7 +1420,7 @@ static Window *PopupMainPlayerToolbMenu(
 
	WP(w, menu_d).main_button = main_button;
 
	WP(w, menu_d).checked_items = gray;
 
	WP(w, menu_d).disabled_items = 0;
 
	_popup_menu_active = true;
 

	
 
	SndPlayFx(SND_15_BEEP);
 
	return w;
 
}
src/window.cpp
Show inline comments
 
@@ -44,7 +44,6 @@ byte _scroller_click_timeout;
 

	
 
bool _scrolling_scrollbar;
 
bool _scrolling_viewport;
 
bool _popup_menu_active;
 

	
 
byte _special_mouse_mode;
 

	
 
@@ -1131,31 +1130,6 @@ static bool HandleDragDrop()
 
	return false;
 
}
 

	
 
static bool HandlePopupMenu()
 
{
 
	if (!_popup_menu_active) return true;
 

	
 
	Window *w = FindWindowById(WC_TOOLBAR_MENU, 0);
 
	if (w == NULL) {
 
		_popup_menu_active = false;
 
		return false;
 
	}
 

	
 
	WindowEvent e;
 
	if (_left_button_down) {
 
		e.event = WE_POPUPMENU_OVER;
 
		e.we.popupmenu.pt = _cursor.pos;
 
	} else {
 
		_popup_menu_active = false;
 
		e.event = WE_POPUPMENU_SELECT;
 
		e.we.popupmenu.pt = _cursor.pos;
 
	}
 

	
 
	w->HandleWindowEvent(&e);
 

	
 
	return false;
 
}
 

	
 
static bool HandleMouseOver()
 
{
 
	Window *w = FindWindowFromPt(_cursor.pos.x, _cursor.pos.y);
 
@@ -1827,7 +1801,6 @@ void MouseLoop(MouseClick click, int mou
 
	UpdateTileSelection();
 
	if (!VpHandlePlaceSizingDrag())  return;
 
	if (!HandleDragDrop())           return;
 
	if (!HandlePopupMenu())          return;
 
	if (!HandleWindowDragging())     return;
 
	if (!HandleScrollbarScrolling()) return;
 
	if (!HandleViewportScroll())     return;
src/window_gui.h
Show inline comments
 
@@ -126,8 +126,6 @@ enum WindowEventCodes {
 
	WE_ABORT_PLACE_OBJ,
 
	WE_ON_EDIT_TEXT,
 
	WE_ON_EDIT_TEXT_CANCEL,
 
	WE_POPUPMENU_SELECT,
 
	WE_POPUPMENU_OVER,
 
	WE_DRAGDROP,
 
	WE_PLACE_DRAG,
 
	WE_PLACE_MOUSEUP,
 
@@ -179,10 +177,6 @@ struct WindowEvent {
 
		} edittext;
 

	
 
		struct {
 
			Point pt;
 
		} popupmenu;
 

	
 
		struct {
 
			int button;
 
			int index;
 
		} dropdown;
 
@@ -563,7 +557,6 @@ extern byte _scroller_click_timeout;
 

	
 
extern bool _scrolling_scrollbar;
 
extern bool _scrolling_viewport;
 
extern bool _popup_menu_active;
 

	
 
extern byte _special_mouse_mode;
 
enum SpecialMouseMode {
0 comments (0 inline, 0 general)