diff options
author | truelight <truelight@openttd.org> | 2006-08-21 14:59:58 +0000 |
---|---|---|
committer | truelight <truelight@openttd.org> | 2006-08-21 14:59:58 +0000 |
commit | a8245983674b253c3eecf44f37acf35a3261763c (patch) | |
tree | 1a79335a7851122f14fcde23385216d03efb72aa | |
parent | 5ca40263a8cdf469f3a17c74e5147ca0726525ee (diff) | |
download | openttd-a8245983674b253c3eecf44f37acf35a3261763c.tar.xz |
(svn r6038) -Codechange: move mousewheel code to event WE_MOUSEWHEEL instead of a general function that handles that
-Codechange: use always 'e' for WindowsEvent, neverr 'we'
-rw-r--r-- | main_gui.c | 4 | ||||
-rw-r--r-- | smallmap_gui.c | 4 | ||||
-rw-r--r-- | window.c | 86 | ||||
-rw-r--r-- | window.h | 6 |
4 files changed, 60 insertions, 40 deletions
diff --git a/main_gui.c b/main_gui.c index 2e0653de9..23c9523ce 100644 --- a/main_gui.c +++ b/main_gui.c @@ -2329,6 +2329,10 @@ static void MainWindowWndProc(Window *w, WindowEvent *e) WP(w, vp_d).scrollpos_x += e->scroll.delta.x << vp->zoom; WP(w, vp_d).scrollpos_y += e->scroll.delta.y << vp->zoom; } break; + + case WE_MOUSEWHEEL: + ZoomInOrOutToCursorWindow(e->wheel.wheel < 0, w); + break; } } diff --git a/smallmap_gui.c b/smallmap_gui.c index dbec6036d..de733d576 100644 --- a/smallmap_gui.c +++ b/smallmap_gui.c @@ -1052,6 +1052,10 @@ static void ExtraViewPortWndProc(Window *w, WindowEvent *e) WP(w, vp_d).scrollpos_x += e->scroll.delta.x << vp->zoom; WP(w, vp_d).scrollpos_y += e->scroll.delta.y << vp->zoom; } break; + + case WE_MOUSEWHEEL: + ZoomInOrOutToCursorWindow(e->wheel.wheel < 0, w); + break; } } @@ -1146,7 +1146,7 @@ static bool HandleScrollbarScrolling(void) static bool HandleViewportScroll(void) { - WindowEvent we; + WindowEvent e; Window *w; if (!_scrolling_viewport) return true; @@ -1160,16 +1160,16 @@ static bool HandleViewportScroll(void) } if (_patches.reverse_scroll) { - we.scroll.delta.x = -_cursor.delta.x; - we.scroll.delta.y = -_cursor.delta.y; + e.scroll.delta.x = -_cursor.delta.x; + e.scroll.delta.y = -_cursor.delta.y; } else { - we.scroll.delta.x = _cursor.delta.x; - we.scroll.delta.y = _cursor.delta.y; + e.scroll.delta.x = _cursor.delta.x; + e.scroll.delta.y = _cursor.delta.y; } /* Create a scroll-event and send it to the window */ - we.event = WE_SCROLL; - w->wndproc(w, &we); + e.event = WE_SCROLL; + w->wndproc(w, &e); _cursor.delta.x = 0; _cursor.delta.y = 0; @@ -1339,44 +1339,50 @@ static void MouseLoop(int click, int mousewheel) if (w == NULL) return; w = MaybeBringWindowToFront(w); vp = IsPtInWindowViewport(w, x, y); + + /* Don't allow any action in a viewport if either in menu of in generating world */ + if (vp != NULL && (_game_mode == GM_MENU || IsGeneratingWorld())) return; + + if (mousewheel != 0) { + WindowEvent e; + + /* Send WE_MOUSEWHEEL event to window */ + e.event = WE_MOUSEWHEEL; + e.wheel.wheel = mousewheel; + w->wndproc(w, &e); + + /* Dispatch a MouseWheelEvent for widgets if it is not a viewport */ + if (vp == NULL) DispatchMouseWheelEvent(w, GetWidgetFromPos(w, x - w->left, y - w->top), mousewheel); + } + if (vp != NULL) { - if (_game_mode == GM_MENU || IsGeneratingWorld()) return; - - // only allow zooming in-out in main window, or in viewports - if (mousewheel && - !(w->flags4 & WF_DISABLE_VP_SCROLL) && ( - w->window_class == WC_MAIN_WINDOW || - w->window_class == WC_EXTRA_VIEW_PORT - )) { - ZoomInOrOutToCursorWindow(mousewheel < 0,w); - } + switch (click) { + case 1: + DEBUG(misc, 2) ("cursor: 0x%X (%d)", _cursor.sprite, _cursor.sprite); + if (_thd.place_mode != 0 && + // query button and place sign button work in pause mode + _cursor.sprite != SPR_CURSOR_QUERY && + _cursor.sprite != SPR_CURSOR_SIGN && + _pause != 0 && + !_cheats.build_in_pause.value) { + return; + } - if (click == 1) { - DEBUG(misc, 2) ("cursor: 0x%X (%d)", _cursor.sprite, _cursor.sprite); - if (_thd.place_mode != 0 && - // query button and place sign button work in pause mode - _cursor.sprite != SPR_CURSOR_QUERY && - _cursor.sprite != SPR_CURSOR_SIGN && - _pause != 0 && - !_cheats.build_in_pause.value) { - return; - } + if (_thd.place_mode == 0) { + HandleViewportClicked(vp, x, y); + } else { + PlaceObject(); + } + break; - if (_thd.place_mode == 0) { - HandleViewportClicked(vp, x, y); - } else { - PlaceObject(); - } - } else if (click == 2) { - if (!(w->flags4 & WF_DISABLE_VP_SCROLL)) { - _scrolling_viewport = true; - _cursor.fix_at = true; - } + case 2: + if (!(w->flags4 & WF_DISABLE_VP_SCROLL)) { + _scrolling_viewport = true; + _cursor.fix_at = true; + } + break; } } else { - if (mousewheel) - DispatchMouseWheelEvent(w, GetWidgetFromPos(w, x - w->left, y - w->top), mousewheel); - switch (click) { case 1: DispatchLeftClickEvent(w, x - w->left, y - w->top); break; case 2: DispatchRightClickEvent(w, x - w->left, y - w->top); break; @@ -141,6 +141,11 @@ union WindowEvent { byte event; Point delta; // delta position against position of last call } scroll; + + struct { + byte event; + int wheel; // how much was 'wheel'd' + } wheel; }; enum WindowKeyCodes { @@ -513,6 +518,7 @@ enum WindowEvents { WE_RESIZE = 22, WE_MESSAGE = 23, WE_SCROLL = 24, + WE_MOUSEWHEEL = 25, }; |