From 7cabe920db30290fa8268f2d0b1f0a4b7f34503d Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Wed, 5 Jan 2011 23:09:45 +1300 Subject: [PATCH] Restrict ClickThrough to what it was originally intended for. --- OpenRA.Game/Widgets/BackgroundWidget.cs | 9 ++++++- OpenRA.Game/Widgets/ButtonWidget.cs | 13 +++-------- OpenRA.Game/Widgets/Widget.cs | 2 -- mods/cnc/chrome/gamelobby.yaml | 1 - mods/cnc/chrome/ingame.yaml | 4 ---- mods/cnc/chrome/mainmenu.yaml | 2 -- mods/cnc/chrome/replaybrowser.yaml | 1 - mods/cnc/chrome/serverbrowser.yaml | 1 - mods/cnc/chrome/videoplayer.yaml | 1 - mods/d2k/chrome/gamelobby.yaml | 1 - mods/d2k/chrome/ingame.yaml | 2 -- mods/d2k/chrome/mainmenu.yaml | 1 - mods/d2k/chrome/serverbrowser.yaml | 1 - mods/d2k/chrome/videoplayer.yaml | 1 - mods/default/menus.yaml | 31 +++++++++++-------------- mods/ra/chrome/gamelobby.yaml | 1 - mods/ra/chrome/ingame.yaml | 4 ---- mods/ra/chrome/mainmenu.yaml | 1 - mods/ra/chrome/replaybrowser.yaml | 1 - mods/ra/chrome/serverbrowser.yaml | 1 - mods/ra/chrome/videoplayer.yaml | 1 - 21 files changed, 25 insertions(+), 55 deletions(-) diff --git a/OpenRA.Game/Widgets/BackgroundWidget.cs b/OpenRA.Game/Widgets/BackgroundWidget.cs index 206fcc51d6..8208ad09e9 100644 --- a/OpenRA.Game/Widgets/BackgroundWidget.cs +++ b/OpenRA.Game/Widgets/BackgroundWidget.cs @@ -15,7 +15,8 @@ namespace OpenRA.Widgets public class BackgroundWidget : Widget { public readonly string Background = "dialog"; - + public readonly bool ClickThrough = false; + public override void DrawInner( WorldRenderer wr ) { WidgetUtils.DrawPanel(Background, RenderBounds); @@ -23,10 +24,16 @@ namespace OpenRA.Widgets public BackgroundWidget() : base() { } + public override bool HandleMouseInput(MouseInput mi) + { + return !ClickThrough; + } + protected BackgroundWidget(BackgroundWidget other) : base(other) { Background = other.Background; + ClickThrough = other.ClickThrough; } public override Widget Clone() { return new BackgroundWidget(this); } diff --git a/OpenRA.Game/Widgets/ButtonWidget.cs b/OpenRA.Game/Widgets/ButtonWidget.cs index 5f92c934a4..13a4fd28ba 100644 --- a/OpenRA.Game/Widgets/ButtonWidget.cs +++ b/OpenRA.Game/Widgets/ButtonWidget.cs @@ -167,14 +167,9 @@ namespace OpenRA.Widgets public static void ShowDropDown(Widget w, IEnumerable ts, Func ft) { - var dropDown = new ScrollPanelWidget() - { - Bounds = new Rectangle(w.RenderOrigin.X, w.RenderOrigin.Y + w.Bounds.Height, w.Bounds.Width, 100), - Visible = true, - ClickThrough = false, - OnMouseUp = mi => true, - ItemSpacing = 1 - }; + var dropDown = new ScrollPanelWidget(); + dropDown.Bounds = new Rectangle(w.RenderOrigin.X, w.RenderOrigin.Y + w.Bounds.Height, w.Bounds.Width, 100); + dropDown.ItemSpacing = 1; List items = new List(); List dismissAfter = new List(); @@ -182,8 +177,6 @@ namespace OpenRA.Widgets { var ww = ft(t, dropDown.Bounds.Width - dropDown.ScrollbarWidth); dismissAfter.Add(ww); - ww.ClickThrough = false; - ww.IsVisible = () => true; ww.OnMouseMove = mi => items.Do(lw => { lw.Background = null; ww.Background = "dialog2"; diff --git a/OpenRA.Game/Widgets/Widget.cs b/OpenRA.Game/Widgets/Widget.cs index f0200cd4fc..0c11fc8950 100644 --- a/OpenRA.Game/Widgets/Widget.cs +++ b/OpenRA.Game/Widgets/Widget.cs @@ -27,7 +27,6 @@ namespace OpenRA.Widgets public string Height = "0"; public string Delegate = null; public string EventHandler = null; - public bool ClickThrough = true; public bool Visible = true; public readonly List Children = new List(); @@ -63,7 +62,6 @@ namespace OpenRA.Widgets Width = widget.Width; Height = widget.Height; Delegate = widget.Delegate; - ClickThrough = widget.ClickThrough; Visible = widget.Visible; Bounds = widget.Bounds; diff --git a/mods/cnc/chrome/gamelobby.yaml b/mods/cnc/chrome/gamelobby.yaml index 87d75cb918..7cfe8f1270 100644 --- a/mods/cnc/chrome/gamelobby.yaml +++ b/mods/cnc/chrome/gamelobby.yaml @@ -447,7 +447,6 @@ Background@MAP_CHOOSER: Id:MAP_TEMPLATE Width:PARENT_RIGHT-28 Height:25 - ClickThrough:false X:2 Y:0 Visible:false diff --git a/mods/cnc/chrome/ingame.yaml b/mods/cnc/chrome/ingame.yaml index 892c0c7993..02d25356c0 100644 --- a/mods/cnc/chrome/ingame.yaml +++ b/mods/cnc/chrome/ingame.yaml @@ -204,7 +204,6 @@ Container@INGAME_ROOT: Y:WINDOW_BOTTOM - HEIGHT - 30 Width: 760 Height: 200 - ClickThrough: True DrawBackground: False RemoveTime:250 ChatEntry@CHAT_ENTRY: @@ -213,7 +212,6 @@ Container@INGAME_ROOT: Y:WINDOW_BOTTOM - HEIGHT Width: 760 Height: 30 - ClickThrough: True Background@DEVELOPERMODE_BG: Id:DEVELOPERMODE_BG Delegate:DeveloperModeDelegate @@ -414,7 +412,6 @@ Container@OBSERVER_ROOT: Y:WINDOW_BOTTOM - HEIGHT - 30 Width: 760 Height: 200 - ClickThrough: True DrawBackground: False RemoveTime:250 ChatEntry@CHAT_ENTRY: @@ -423,7 +420,6 @@ Container@OBSERVER_ROOT: Y:WINDOW_BOTTOM - HEIGHT Width: 760 Height: 30 - ClickThrough: True Background@FMVPLAYER: Id:FMVPLAYER Width:WINDOW_RIGHT diff --git a/mods/cnc/chrome/mainmenu.yaml b/mods/cnc/chrome/mainmenu.yaml index 7013d9b680..7e78b686fb 100644 --- a/mods/cnc/chrome/mainmenu.yaml +++ b/mods/cnc/chrome/mainmenu.yaml @@ -73,7 +73,6 @@ Background@MAINMENU_BG: Text:Video Player Bold:True Background@PERF_BG: - ClickThrough:true Id:PERF_BG Background:dialog4 Delegate:PerfDebugDelegate @@ -218,7 +217,6 @@ Background@MUSIC_MENU: Id:MUSIC_TEMPLATE Width:PARENT_RIGHT-28 Height:25 - ClickThrough:false X:2 Y:0 Visible:false diff --git a/mods/cnc/chrome/replaybrowser.yaml b/mods/cnc/chrome/replaybrowser.yaml index 72baeba2c3..80ab703033 100644 --- a/mods/cnc/chrome/replaybrowser.yaml +++ b/mods/cnc/chrome/replaybrowser.yaml @@ -26,7 +26,6 @@ Background@REPLAYBROWSER_BG: Id:REPLAY_TEMPLATE Width:PARENT_RIGHT-28 Height:25 - ClickThrough:false X:2 Y:0 Visible:false diff --git a/mods/cnc/chrome/serverbrowser.yaml b/mods/cnc/chrome/serverbrowser.yaml index 17f6229265..5246e5d585 100644 --- a/mods/cnc/chrome/serverbrowser.yaml +++ b/mods/cnc/chrome/serverbrowser.yaml @@ -120,7 +120,6 @@ Background@JOINSERVER_BG: Id:SERVER_TEMPLATE Width:PARENT_RIGHT-28 Height:25 - ClickThrough:false X:2 Y:0 Visible:false diff --git a/mods/cnc/chrome/videoplayer.yaml b/mods/cnc/chrome/videoplayer.yaml index 38eeff162a..8a9437eb58 100644 --- a/mods/cnc/chrome/videoplayer.yaml +++ b/mods/cnc/chrome/videoplayer.yaml @@ -31,7 +31,6 @@ Background@VIDEOPLAYER_MENU: Id:VIDEO_TEMPLATE Width:PARENT_RIGHT-28 Height:25 - ClickThrough:false X:2 Y:0 Visible:false diff --git a/mods/d2k/chrome/gamelobby.yaml b/mods/d2k/chrome/gamelobby.yaml index c63d53c9d7..56aa9e5812 100644 --- a/mods/d2k/chrome/gamelobby.yaml +++ b/mods/d2k/chrome/gamelobby.yaml @@ -417,7 +417,6 @@ Background@MAP_CHOOSER: Id:MAP_TEMPLATE Width:PARENT_RIGHT-28 Height:25 - ClickThrough:false X:2 Y:0 Visible:false diff --git a/mods/d2k/chrome/ingame.yaml b/mods/d2k/chrome/ingame.yaml index 9f8f6ae9f3..f0a4e45aac 100644 --- a/mods/d2k/chrome/ingame.yaml +++ b/mods/d2k/chrome/ingame.yaml @@ -203,7 +203,6 @@ Container@INGAME_ROOT: Y:WINDOW_BOTTOM - HEIGHT - 30 Width: 760 Height: 200 - ClickThrough: True DrawBackground: False RemoveTime:250 ChatEntry@CHAT_ENTRY: @@ -212,7 +211,6 @@ Container@INGAME_ROOT: Y:WINDOW_BOTTOM - HEIGHT Width: 760 Height: 30 - ClickThrough: True Background@DEVELOPERMODE_BG: Id:DEVELOPERMODE_BG Delegate:DeveloperModeDelegate diff --git a/mods/d2k/chrome/mainmenu.yaml b/mods/d2k/chrome/mainmenu.yaml index b02efcb949..84ca00dd97 100644 --- a/mods/d2k/chrome/mainmenu.yaml +++ b/mods/d2k/chrome/mainmenu.yaml @@ -220,7 +220,6 @@ Background@MUSIC_MENU: Id:MUSIC_TEMPLATE Width:PARENT_RIGHT-28 Height:25 - ClickThrough:false X:2 Y:0 Visible:false diff --git a/mods/d2k/chrome/serverbrowser.yaml b/mods/d2k/chrome/serverbrowser.yaml index ce68c4b4c6..93188873e8 100644 --- a/mods/d2k/chrome/serverbrowser.yaml +++ b/mods/d2k/chrome/serverbrowser.yaml @@ -122,7 +122,6 @@ Background@JOINSERVER_BG: Id:SERVER_TEMPLATE Width:PARENT_RIGHT-28 Height:25 - ClickThrough:false X:2 Y:0 Visible:false diff --git a/mods/d2k/chrome/videoplayer.yaml b/mods/d2k/chrome/videoplayer.yaml index 08448de714..0d7c3b6287 100644 --- a/mods/d2k/chrome/videoplayer.yaml +++ b/mods/d2k/chrome/videoplayer.yaml @@ -32,7 +32,6 @@ Background@VIDEOPLAYER_MENU: Id:VIDEO_TEMPLATE Width:PARENT_RIGHT-28 Height:25 - ClickThrough:false X:2 Y:0 Visible:false diff --git a/mods/default/menus.yaml b/mods/default/menus.yaml index 60a3476b70..1f5c8c77d2 100644 --- a/mods/default/menus.yaml +++ b/mods/default/menus.yaml @@ -1,18 +1,15 @@ -Container: - ClickThrough:true +Background@MAINMENU_BG: + Id:MAINMENU_BG + X:(WINDOW_RIGHT - WIDTH)/2 + Y:(WINDOW_BOTTOM - HEIGHT)/2 + Width:250 + Height:65 + Delegate:MainMenuButtonsDelegate Children: - Background@MAINMENU_BG: - Id:MAINMENU_BG - X:(WINDOW_RIGHT - WIDTH)/2 - Y:(WINDOW_BOTTOM - HEIGHT)/2 - Width:250 - Height:65 - Delegate:MainMenuButtonsDelegate - Children: - Button@MAINMENU_BUTTON_QUIT: - Id:MAINMENU_BUTTON_QUIT - X:45 - Y:20 - Width:160 - Height:25 - Text:Quit \ No newline at end of file + Button@MAINMENU_BUTTON_QUIT: + Id:MAINMENU_BUTTON_QUIT + X:45 + Y:20 + Width:160 + Height:25 + Text:Quit \ No newline at end of file diff --git a/mods/ra/chrome/gamelobby.yaml b/mods/ra/chrome/gamelobby.yaml index f733a8c5ae..5a044e7844 100644 --- a/mods/ra/chrome/gamelobby.yaml +++ b/mods/ra/chrome/gamelobby.yaml @@ -447,7 +447,6 @@ Background@MAP_CHOOSER: Id:MAP_TEMPLATE Width:PARENT_RIGHT-28 Height:25 - ClickThrough:false X:2 Y:0 Visible:false diff --git a/mods/ra/chrome/ingame.yaml b/mods/ra/chrome/ingame.yaml index d4d3ca238f..1e00e6349b 100644 --- a/mods/ra/chrome/ingame.yaml +++ b/mods/ra/chrome/ingame.yaml @@ -211,7 +211,6 @@ Container@INGAME_ROOT: Y:WINDOW_BOTTOM - HEIGHT - 30 Width: 760 Height: 200 - ClickThrough: True DrawBackground: False RemoveTime:250 ChatEntry@CHAT_ENTRY: @@ -220,7 +219,6 @@ Container@INGAME_ROOT: Y:WINDOW_BOTTOM - HEIGHT Width: 760 Height: 30 - ClickThrough: True Background@DEVELOPERMODE_BG: Id:DEVELOPERMODE_BG Delegate:DeveloperModeDelegate @@ -421,7 +419,6 @@ Container@OBSERVER_ROOT: Y:WINDOW_BOTTOM - HEIGHT - 30 Width: 760 Height: 200 - ClickThrough: True DrawBackground: False RemoveTime:250 ChatEntry@CHAT_ENTRY: @@ -430,7 +427,6 @@ Container@OBSERVER_ROOT: Y:WINDOW_BOTTOM - HEIGHT Width: 760 Height: 30 - ClickThrough: True Background@FMVPLAYER: Id:FMVPLAYER Width:WINDOW_RIGHT diff --git a/mods/ra/chrome/mainmenu.yaml b/mods/ra/chrome/mainmenu.yaml index 713eff510c..b009b53c45 100644 --- a/mods/ra/chrome/mainmenu.yaml +++ b/mods/ra/chrome/mainmenu.yaml @@ -219,7 +219,6 @@ Background@MUSIC_MENU: Id:MUSIC_TEMPLATE Width:PARENT_RIGHT-28 Height:25 - ClickThrough:false X:2 Y:0 Visible:false diff --git a/mods/ra/chrome/replaybrowser.yaml b/mods/ra/chrome/replaybrowser.yaml index 72baeba2c3..80ab703033 100644 --- a/mods/ra/chrome/replaybrowser.yaml +++ b/mods/ra/chrome/replaybrowser.yaml @@ -26,7 +26,6 @@ Background@REPLAYBROWSER_BG: Id:REPLAY_TEMPLATE Width:PARENT_RIGHT-28 Height:25 - ClickThrough:false X:2 Y:0 Visible:false diff --git a/mods/ra/chrome/serverbrowser.yaml b/mods/ra/chrome/serverbrowser.yaml index 17f6229265..5246e5d585 100644 --- a/mods/ra/chrome/serverbrowser.yaml +++ b/mods/ra/chrome/serverbrowser.yaml @@ -120,7 +120,6 @@ Background@JOINSERVER_BG: Id:SERVER_TEMPLATE Width:PARENT_RIGHT-28 Height:25 - ClickThrough:false X:2 Y:0 Visible:false diff --git a/mods/ra/chrome/videoplayer.yaml b/mods/ra/chrome/videoplayer.yaml index 38eeff162a..8a9437eb58 100644 --- a/mods/ra/chrome/videoplayer.yaml +++ b/mods/ra/chrome/videoplayer.yaml @@ -31,7 +31,6 @@ Background@VIDEOPLAYER_MENU: Id:VIDEO_TEMPLATE Width:PARENT_RIGHT-28 Height:25 - ClickThrough:false X:2 Y:0 Visible:false