From db930bbd66c68dff540309a95c94cf3534f1ef9d Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Wed, 30 Dec 2015 14:31:33 +1100 Subject: [PATCH] Fix select texture pack being broken. (Thanks ShadowMewssacre) --- .../2D/Screens/Menu/TexturePackScreen.cs | 3 ++- ClassicalSharp/TexturePack/AcceptedUrls.cs | 10 ++++++---- Launcher2/Gui/Screens/LauncherInputScreen.cs | 18 +++++++++++++++++- Launcher2/Gui/Screens/LauncherScreen.cs | 11 ++++++++--- 4 files changed, 33 insertions(+), 9 deletions(-) diff --git a/ClassicalSharp/2D/Screens/Menu/TexturePackScreen.cs b/ClassicalSharp/2D/Screens/Menu/TexturePackScreen.cs index 100b8336b..095915454 100644 --- a/ClassicalSharp/2D/Screens/Menu/TexturePackScreen.cs +++ b/ClassicalSharp/2D/Screens/Menu/TexturePackScreen.cs @@ -25,7 +25,8 @@ namespace ClassicalSharp { protected override void TextButtonClick( Game game, Widget widget ) { string file = ((ButtonWidget)widget).Text; - string path = Path.Combine( Program.AppDirectory, file ); + string dir = Path.Combine( Program.AppDirectory, TexturePackExtractor.Dir ); + string path = Path.Combine( dir, file ); if( !File.Exists( path ) ) return; diff --git a/ClassicalSharp/TexturePack/AcceptedUrls.cs b/ClassicalSharp/TexturePack/AcceptedUrls.cs index 5ef104ff3..c0a311c38 100644 --- a/ClassicalSharp/TexturePack/AcceptedUrls.cs +++ b/ClassicalSharp/TexturePack/AcceptedUrls.cs @@ -19,9 +19,13 @@ namespace ClassicalSharp { } public bool Load() { + string path = Path.Combine( Program.AppDirectory, folder ); + path = Path.Combine( path, file ); + if( !File.Exists( file ) ) + return true; + try { - string path = Path.Combine( Program.AppDirectory, folder ); - using( Stream fs = File.OpenRead( Path.Combine( path, file ) ) ) + using( Stream fs = File.OpenRead( path ) ) using( StreamReader reader = new StreamReader( fs, false ) ) { string line; @@ -31,8 +35,6 @@ namespace ClassicalSharp { } } return true; - } catch( FileNotFoundException ) { - return true; } catch( IOException ex ) { ErrorHandler.LogError( "loading accepted urls", ex ); return false; diff --git a/Launcher2/Gui/Screens/LauncherInputScreen.cs b/Launcher2/Gui/Screens/LauncherInputScreen.cs index c22f7da9a..fd721d133 100644 --- a/Launcher2/Gui/Screens/LauncherInputScreen.cs +++ b/Launcher2/Gui/Screens/LauncherInputScreen.cs @@ -55,7 +55,11 @@ namespace Launcher2 { } else if( e.Key == Key.Tab ) { HandleTab(); } - if( lastInput == null ) return; + if( lastInput == null ) { + if( e.Key == Key.Escape ) + game.SetScreen( new MainScreen( game ) ); + return; + } if( e.Key == Key.BackSpace && lastInput.BackspaceChar() ) { RedrawLastInput(); @@ -154,6 +158,18 @@ namespace Launcher2 { Dirty = true; } + protected override void WidgetUnclicked( LauncherWidget widget ) { + LauncherInputWidget input = widget as LauncherInputWidget; + if( input == null ) return; + using( drawer ) { + drawer.SetBitmap( game.Framebuffer ); + input.Active = false; + input.Redraw( drawer, lastInput.Text, inputFont, inputHintFont ); + } + lastInput = null; + Dirty = true; + } + protected void MakeInput( string text, int width, Anchor verAnchor, bool password, int x, int y, int maxChars, string hint ) { MakeInput( text, width, Anchor.Centre, verAnchor, password, x, y, maxChars, hint ); diff --git a/Launcher2/Gui/Screens/LauncherScreen.cs b/Launcher2/Gui/Screens/LauncherScreen.cs index af8dc57e2..abb80265a 100644 --- a/Launcher2/Gui/Screens/LauncherScreen.cs +++ b/Launcher2/Gui/Screens/LauncherScreen.cs @@ -87,13 +87,18 @@ namespace Launcher2 { protected LauncherWidget lastClicked; protected void MouseButtonDown( object sender, MouseButtonEventArgs e ) { - if( e.Button != MouseButton.Left || selectedWidget == null ) return; + if( e.Button != MouseButton.Left ) return; - if( selectedWidget.OnClick != null ) - selectedWidget.OnClick( e.X, e.Y ); + if( lastClicked != null && lastClicked != selectedWidget ) + WidgetUnclicked( lastClicked ); + if( selectedWidget != null && selectedWidget.OnClick != null ) + selectedWidget.OnClick( e.X, e.Y ); lastClicked = selectedWidget; } + protected virtual void WidgetUnclicked( LauncherWidget widget ) { + } + protected bool tabDown = false; MouseMoveEventArgs moveArgs = new MouseMoveEventArgs(); MouseButtonEventArgs pressArgs = new MouseButtonEventArgs();