Skip to content
This repository was archived by the owner on Sep 11, 2023. It is now read-only.

Commit 185629b

Browse files
committed
Fix crashes
1 parent 1f71805 commit 185629b

File tree

3 files changed

+35
-17
lines changed

3 files changed

+35
-17
lines changed

Interop/TranslationProvider.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Threading.Tasks;
55
using System.Globalization;
66
using System.IO;
7+
using System.Linq;
78
using System.Xml;
89
using System.Windows;
910

@@ -17,7 +18,7 @@ public class TranslationProvider
1718
public bool IsDefault = true;
1819

1920

20-
private Dictionary<string, string> language = new Dictionary<string, string>();
21+
private readonly Dictionary<string, string> language = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
2122

2223
public string GetLanguage(string langID)
2324
{
@@ -35,7 +36,6 @@ public string GetLanguage(string langID)
3536
public void LoadLanguage(string lang, bool Initial = false)
3637
{
3738
FillToEnglishDefaults();
38-
Dictionary<string, string> language = new Dictionary<string, string>();
3939
List<string> languageList = new List<string>();
4040
List<string> languageIDList = new List<string>();
4141
languageList.Add("English");
@@ -52,6 +52,7 @@ public void LoadLanguage(string lang, bool Initial = false)
5252
{
5353
throw new Exception("No Root-Node: \"translations\" found");
5454
}
55+
5556
XmlNode rootLangNode = null;
5657
foreach (XmlNode childNode in document.ChildNodes[0].ChildNodes)
5758
{
@@ -78,7 +79,7 @@ public void LoadLanguage(string lang, bool Initial = false)
7879
}
7980
string nn = node.Name.ToLowerInvariant();
8081
string nv = node.InnerText;
81-
language.Add(nn, nv);
82+
language[nn] = nv;
8283
}
8384
}
8485
}
@@ -96,7 +97,8 @@ public void LoadLanguage(string lang, bool Initial = false)
9697

9798
private void FillToEnglishDefaults()
9899
{
99-
language.Add("Language", "English");
100+
language.Clear();
101+
language.Add("Language", "English");
100102
language.Add("ServerRunning", "Server running");
101103
language.Add("Saving", "Saving");
102104
language.Add("SavingUFiles", "Save all unsaved files?");
@@ -258,7 +260,7 @@ private void FillToEnglishDefaults()
258260
language.Add("RestartEdiFullEff", "Restart editor to take full effect...");
259261
language.Add("RestartEdiEff", "Restart editor to take effect...");
260262
language.Add("Program", "Program");
261-
language.Add("HardwareAcc", "Use hardware acceleration (if available)");
263+
language.Add("HardwareAcc", "Use hardware acceleration (if availablessss)");
262264
language.Add("UIAnim", "UI animations");
263265
language.Add("OpenInc", "Auto open includes");
264266
language.Add("OpenIncRec", "Open Includes Recursively");

UI/Components/EditorElement.xaml.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -610,6 +610,9 @@ private void TextArea_TextEntering(object sender, TextCompositionEventArgs e)
610610
{
611611
if (e.Text == "\n")
612612
{
613+
if (editor.Document.TextLength < editor.CaretOffset+1)
614+
return;
615+
613616
var segment = new AnchorSegment(editor.Document, editor.CaretOffset - 1, 2);
614617
var text = editor.Document.GetText(segment);
615618
if (text == "{}")

UI/Windows/OptionsWindow.xaml.cs

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
using System;
22
using System.Diagnostics;
3+
using System.Linq;
34
using System.Windows;
5+
using System.Windows.Controls;
46
using System.Windows.Media;
57
using MahApps.Metro;
68
using MahApps.Metro.Controls.Dialogs;
@@ -284,17 +286,13 @@ private void HighlightDeprecateds_Changed(object sender, RoutedEventArgs e)
284286
private void LanguageBox_Changed(object sender, RoutedEventArgs e)
285287
{
286288
if (!AllowChanging) { return; }
287-
string selectedString = (string)LanguageBox.SelectedItem;
288-
for (int i = 0; i < Program.Translations.AvailableLanguages.Length; ++i)
289-
{
290-
if (Program.Translations.AvailableLanguages[i] == selectedString)
291-
{
292-
Program.Translations.LoadLanguage(Program.Translations.AvailableLanguageIDs[i]);
293-
Program.OptionsObject.Language = Program.Translations.AvailableLanguageIDs[i];
294-
Program.MainWindow.Language_Translate();
295-
break;
296-
}
297-
}
289+
var originalSource = (ComboBox)e.OriginalSource;
290+
var selectedItem = (ComboboxItem)originalSource.SelectedItem;
291+
var lang = Program.Translations.AvailableLanguageIDs.FirstOrDefault(l => l == selectedItem.Value);
292+
293+
Program.Translations.LoadLanguage(lang);
294+
Program.OptionsObject.Language = lang;
295+
Program.MainWindow.Language_Translate();
298296
Language_Translate();
299297
ToggleRestartText(true);
300298
}
@@ -378,7 +376,12 @@ private void LoadSettings()
378376
}
379377
for (int i = 0; i < Program.Translations.AvailableLanguages.Length; ++i)
380378
{
381-
LanguageBox.Items.Add(Program.Translations.AvailableLanguages[i]);
379+
var item = new ComboboxItem
380+
{
381+
Text = Program.Translations.AvailableLanguages[i],
382+
Value = Program.Translations.AvailableLanguageIDs[i]
383+
};
384+
LanguageBox.Items.Add(item);
382385
if (Program.OptionsObject.Language == Program.Translations.AvailableLanguageIDs[i])
383386
{
384387
LanguageBox.SelectedIndex = i;
@@ -466,4 +469,14 @@ private void Language_Translate()
466469
AutoSaveBlock.Text = Program.Translations.GetLanguage("AutoSaveMin");
467470
}
468471
}
472+
public class ComboboxItem
473+
{
474+
public string Text { get; set; }
475+
public string Value { get; set; }
476+
477+
public override string ToString()
478+
{
479+
return Text;
480+
}
481+
}
469482
}

0 commit comments

Comments
 (0)