diff --git a/MapView/Forms/Observers/TopView/QuadrantPanel.cs b/MapView/Forms/Observers/TopView/QuadrantPanel.cs
index 93e765e0..e5ef292d 100644
--- a/MapView/Forms/Observers/TopView/QuadrantPanel.cs
+++ b/MapView/Forms/Observers/TopView/QuadrantPanel.cs
@@ -165,15 +165,14 @@ protected override void OnMouseDown(MouseEventArgs e)
///
///
///
- ///
+ /// true if invoked by keyboard-input
internal void Operate(MouseButtons button, int clicks, bool keySelectQuadrant = false)
{
if (Tile != null)
{
switch (button)
{
- case MouseButtons.Left:
- // clicks=1 is done by caller.
+ case MouseButtons.Left: // NOTE: clicks=1 is handled by caller.
if (clicks == 2)
ObserverManager.TileView.Control.SelectedTilepart = Tile[SelectedQuadrant];
break;
@@ -181,7 +180,7 @@ internal void Operate(MouseButtons button, int clicks, bool keySelectQuadrant =
case MouseButtons.Right:
if (MainViewOverlay.that.FirstClick) // do not set a part in a quad unless a tile is selected.
{
- if (!keySelectQuadrant)
+ if (!keySelectQuadrant && TopView.Optionables.EnableRightClickWaitTimer)
{
_t1.Stop();
++_t1Clicks;
diff --git a/MapView/Forms/Observers/TopView/TopPanel.cs b/MapView/Forms/Observers/TopView/TopPanel.cs
index 4b701bcb..57c58d50 100644
--- a/MapView/Forms/Observers/TopView/TopPanel.cs
+++ b/MapView/Forms/Observers/TopView/TopPanel.cs
@@ -481,8 +481,16 @@ protected override void OnMouseDown(MouseEventArgs e)
case MouseButtons.Right:
if (MainViewOverlay.that.FirstClick)
{
- ObserverManager.TopView .Control .QuadrantPanel.Operate(MouseButtons.Right, 1);
- ObserverManager.TopRouteView.ControlTop.QuadrantPanel.Operate(MouseButtons.Right, 1);
+ int clicks;
+ if (TopView.Optionables.EnableRightClickWaitTimer)
+ {
+ clicks = 1;
+ }
+ else
+ clicks = e.Clicks;
+
+ ObserverManager.TopView .Control .QuadrantPanel.Operate(MouseButtons.Right, clicks);
+ ObserverManager.TopRouteView.ControlTop.QuadrantPanel.Operate(MouseButtons.Right, clicks);
}
break;
}
diff --git a/MapView/Forms/Observers/TopView/TopViewOptionables.cs b/MapView/Forms/Observers/TopView/TopViewOptionables.cs
index 730be298..f534edde 100644
--- a/MapView/Forms/Observers/TopView/TopViewOptionables.cs
+++ b/MapView/Forms/Observers/TopView/TopViewOptionables.cs
@@ -319,6 +319,31 @@ public Color SelectedQuadColor
get { return _selectedQuadColor; }
set { _selectedQuadColor = value; }
}
+
+
+
+ private const string cat_General = "General";
+
+ private const string str_EnableRightClickWaitTimer = "EnableRightClickWaitTimer";
+ private const bool def_EnableRightClickWaitTimer = false;
+
+ private bool _enablewait = def_EnableRightClickWaitTimer;
+ [Category(cat_General)]
+ [Description("If true then right-clicking or double right-clicking on"
+ + " either a tile or a quadrant slot causes a very short delay"
+ + " in order to detect whether a single or double click happened."
+ + " This delay is used to bypass a single-click event [place"
+ + " tilepart] if a double-click [clear tilepart] is detected"
+ + " instead. If this option is false (default) then a double"
+ + " right-click causes a tilepart to be placed and cleared in rapid"
+ + " succession. WARNING: Enabling this option could cause TopView"
+ + " to exhibit unstable behavior")]
+ [DefaultValue(def_EnableRightClickWaitTimer)]
+ public bool EnableRightClickWaitTimer
+ {
+ get { return _enablewait; }
+ set { _enablewait = value; }
+ }
#endregion Properties (optionable)
@@ -364,23 +389,25 @@ internal void LoadDefaults(Options options)
OptionChangedEvent changer = OnOptionChanged;
- options.AddOptionDefault(str_GridLineColor, def_GridLineColor, changer);
- options.AddOptionDefault(str_GridLineWidth, def_GridLineWidth, changer);
- options.AddOptionDefault(str_GridLine10Color, def_GridLine10Color, changer);
- options.AddOptionDefault(str_GridLine10Width, def_GridLine10Width, changer);
-
- options.AddOptionDefault(str_FloorColor, def_FloorColor, changer);
- options.AddOptionDefault(str_WestColor, def_WestColor, changer);
- options.AddOptionDefault(str_WestWidth, def_WestWidth, changer);
- options.AddOptionDefault(str_NorthColor, def_NorthColor, changer);
- options.AddOptionDefault(str_NorthWidth, def_NorthWidth, changer);
- options.AddOptionDefault(str_ContentColor, def_ContentColor, changer);
-
- options.AddOptionDefault(str_SelectorColor, def_SelectorColor, changer);
- options.AddOptionDefault(str_SelectorWidth, def_SelectorWidth, changer);
- options.AddOptionDefault(str_SelectedColor, def_SelectedColor, changer);
- options.AddOptionDefault(str_SelectedWidth, def_SelectedWidth, changer);
- options.AddOptionDefault(str_SelectedQuadColor, def_SelectedQuadColor, OnQuadColorChanged);
+ options.AddOptionDefault(str_GridLineColor, def_GridLineColor, changer);
+ options.AddOptionDefault(str_GridLineWidth, def_GridLineWidth, changer);
+ options.AddOptionDefault(str_GridLine10Color, def_GridLine10Color, changer);
+ options.AddOptionDefault(str_GridLine10Width, def_GridLine10Width, changer);
+
+ options.AddOptionDefault(str_FloorColor, def_FloorColor, changer);
+ options.AddOptionDefault(str_WestColor, def_WestColor, changer);
+ options.AddOptionDefault(str_WestWidth, def_WestWidth, changer);
+ options.AddOptionDefault(str_NorthColor, def_NorthColor, changer);
+ options.AddOptionDefault(str_NorthWidth, def_NorthWidth, changer);
+ options.AddOptionDefault(str_ContentColor, def_ContentColor, changer);
+
+ options.AddOptionDefault(str_SelectorColor, def_SelectorColor, changer);
+ options.AddOptionDefault(str_SelectorWidth, def_SelectorWidth, changer);
+ options.AddOptionDefault(str_SelectedColor, def_SelectedColor, changer);
+ options.AddOptionDefault(str_SelectedWidth, def_SelectedWidth, changer);
+ options.AddOptionDefault(str_SelectedQuadColor, def_SelectedQuadColor, OnQuadColorChanged);
+
+ options.AddOptionDefault(str_EnableRightClickWaitTimer, def_EnableRightClickWaitTimer, OnFlagChanged);
}
#endregion Methods
@@ -430,6 +457,22 @@ private void OnQuadColorChanged(string key, object val)
ObserverManager.TopView .Control .QuadrantPanel.Invalidate();
ObserverManager.TopRouteView.ControlTop.QuadrantPanel.Invalidate();
}
+
+ ///
+ /// Sets the value of an optionable property but doesn't invalidate
+ /// anything.
+ ///
+ /// one of the standard keys of an optionable
+ /// the value to set it to
+ internal void OnFlagChanged(string key, object val)
+ {
+// switch (key)
+// {
+// case str_EnableRightClickWaitTimer:
+ EnableRightClickWaitTimer = (bool)val;
+// break;
+// }
+ }
#endregion Events