Fix client crashing in classic mode when pasting past 62*3 characters.

This commit is contained in:
UnknownShadow200 2016-04-09 07:44:16 +10:00
parent 119cd745ed
commit b15106c960
2 changed files with 6 additions and 6 deletions

View File

@ -221,7 +221,7 @@ namespace ClassicalSharp.Gui {
}
bool OtherKey( Key key ) {
if( key == Key.V && chatInputText.Length < len ) {
if( key == Key.V && chatInputText.Length < TotalChars ) {
string text = Clipboard.GetText();
if( String.IsNullOrEmpty( text ) ) return true;
game.Chat.Add( null, MessageType.ClientStatus4 );

View File

@ -6,7 +6,6 @@ namespace ClassicalSharp.Gui {
public sealed partial class TextInputWidget : Widget {
const int len = 64 * 3;
const int lines = 3;
internal AltTextInputWidget altText;
public TextInputWidget( Game game, Font font, Font boldFont ) : base( game ) {
@ -14,7 +13,7 @@ namespace ClassicalSharp.Gui {
VerticalAnchor = Anchor.BottomOrRight;
typingLogPos = game.Chat.InputLog.Count; // Index of newest entry + 1.
chatInputText = new WrappableStringBuffer( len );
chatInputText = new WrappableStringBuffer( TotalChars );
DrawTextArgs args = new DrawTextArgs( "A", boldFont, true );
Size defSize = game.Drawer2D.MeasureChatSize( ref args );
defaultWidth = defSize.Width; defaultHeight = defSize.Height;
@ -66,6 +65,7 @@ namespace ClassicalSharp.Gui {
bool shownWarning;
int LineLength { get { return game.Network.ServerSupportsPartialMessages ? 64 : 62; } }
int TotalChars { get { return LineLength * lines; } }
public override void Init() {
X = 5;
@ -250,8 +250,8 @@ namespace ClassicalSharp.Gui {
}
public void AppendText( string text ) {
if( chatInputText.Length + text.Length > len ) {
text = text.Substring( 0, len - chatInputText.Length );
if( chatInputText.Length + text.Length > TotalChars ) {
text = text.Substring( 0, TotalChars - chatInputText.Length );
}
if( text == "" ) return;
@ -267,7 +267,7 @@ namespace ClassicalSharp.Gui {
}
public void AppendChar( char c ) {
if( chatInputText.Length == len ) return;
if( chatInputText.Length == TotalChars ) return;
if( caretPos == -1 ) {
chatInputText.InsertAt( chatInputText.Length, c );