Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoriain holmes <iain@xamarin.com>2017-06-07 20:58:16 +0300
committerAlan McGovern <alanmcgovern@users.noreply.github.com>2017-06-08 11:03:40 +0300
commitc4c291c6dd75cfe44e42052b3338859230209ade (patch)
tree450e079d0b3459f1bb62f22089311521a3dac712 /main/src/core/MonoDevelop.Ide/MonoDevelop.Components
parent7201557942835aa34d1a7aec1d1f838537c35333 (diff)
[A11y] Fix crash when the tabstrip is reset on debugging
When the tabstrip was being focused it could try to access a tab with a negative index and crash
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Components')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Tabstrip.cs19
1 files changed, 14 insertions, 5 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Tabstrip.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Tabstrip.cs
index b950d27904..5db69245bb 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Tabstrip.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Tabstrip.cs
@@ -103,6 +103,11 @@ namespace MonoDevelop.Components
tab.Active = true;
else if (activeTab >= index)
activeTab++;
+
+ if (focusedTab >= index) {
+ focusedTab++;
+ }
+
QueueResize ();
tab.Allocation = GetBounds (tab);
@@ -233,17 +238,19 @@ namespace MonoDevelop.Components
case DirectionType.Right:
focusedTab++;
if (focusedTab >= tabs.Count) {
+ focusedTab = -1;
ret = false;
}
break;
case DirectionType.TabBackward:
case DirectionType.Left:
- if (focusedTab == -1) {
+ if (focusedTab <= -1) {
focusedTab = tabs.Count;
}
focusedTab--;
if (focusedTab < 0) {
+ focusedTab = -1;
ret = false;
}
break;
@@ -251,11 +258,13 @@ namespace MonoDevelop.Components
if (ret) {
GrabFocus ();
- if (oldFocus >= 0) {
+ if (oldFocus >= 0 && oldFocus < tabs.Count) {
tabs [oldFocus].Focused = false;
}
- tabs [focusedTab].Focused = true;
+ if (focusedTab >= 0) {
+ tabs [focusedTab].Focused = true;
+ }
} else {
focusedTab = 0;
}
@@ -272,10 +281,10 @@ namespace MonoDevelop.Components
protected override bool OnFocusOutEvent (Gdk.EventFocus evnt)
{
- if (focusedTab > -1) {
+ if (focusedTab > -1 && focusedTab <= tabs.Count) {
tabs [focusedTab].Focused = false;
- focusedTab = -1;
}
+ focusedTab = -1;
QueueDraw ();
return base.OnFocusOutEvent (evnt);
}