mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-08 20:27:36 +02:00
[FancyZones] Add setting to use mouse middle-click to toggle multiple zones spanning (#27603)
This commit is contained in:
@@ -76,12 +76,15 @@ void DraggingState::OnSecondaryMouseDown()
|
|||||||
|
|
||||||
void DraggingState::OnMiddleMouseDown()
|
void DraggingState::OnMiddleMouseDown()
|
||||||
{
|
{
|
||||||
if (!this->IsDragging())
|
if (FancyZonesSettings::settings().mouseMiddleClickSpanningMultipleZones)
|
||||||
{
|
{
|
||||||
return;
|
m_middleMouseState = !m_middleMouseState;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_secondaryMouseState = !m_secondaryMouseState;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_middleMouseState = !m_middleMouseState;
|
|
||||||
m_keyUpdateCallback();
|
m_keyUpdateCallback();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ namespace NonLocalizable
|
|||||||
// FancyZones settings descriptions are localized, but underlying toggle (spinner, color picker) names are not.
|
// FancyZones settings descriptions are localized, but underlying toggle (spinner, color picker) names are not.
|
||||||
const wchar_t ShiftDragID[] = L"fancyzones_shiftDrag";
|
const wchar_t ShiftDragID[] = L"fancyzones_shiftDrag";
|
||||||
const wchar_t MouseSwitchID[] = L"fancyzones_mouseSwitch";
|
const wchar_t MouseSwitchID[] = L"fancyzones_mouseSwitch";
|
||||||
|
const wchar_t MouseMiddleClickSpanningMultipleZonesID[] = L"fancyzones_mouseMiddleClickSpanningMultipleZones";
|
||||||
const wchar_t OverrideSnapHotKeysID[] = L"fancyzones_overrideSnapHotkeys";
|
const wchar_t OverrideSnapHotKeysID[] = L"fancyzones_overrideSnapHotkeys";
|
||||||
const wchar_t MoveWindowAcrossMonitorsID[] = L"fancyzones_moveWindowAcrossMonitors";
|
const wchar_t MoveWindowAcrossMonitorsID[] = L"fancyzones_moveWindowAcrossMonitors";
|
||||||
const wchar_t MoveWindowsBasedOnPositionID[] = L"fancyzones_moveWindowsBasedOnPosition";
|
const wchar_t MoveWindowsBasedOnPositionID[] = L"fancyzones_moveWindowsBasedOnPosition";
|
||||||
@@ -108,6 +109,7 @@ void FancyZonesSettings::LoadSettings()
|
|||||||
// flags
|
// flags
|
||||||
SetBoolFlag(values, NonLocalizable::ShiftDragID, SettingId::ShiftDrag, m_settings.shiftDrag);
|
SetBoolFlag(values, NonLocalizable::ShiftDragID, SettingId::ShiftDrag, m_settings.shiftDrag);
|
||||||
SetBoolFlag(values, NonLocalizable::MouseSwitchID, SettingId::MouseSwitch, m_settings.mouseSwitch);
|
SetBoolFlag(values, NonLocalizable::MouseSwitchID, SettingId::MouseSwitch, m_settings.mouseSwitch);
|
||||||
|
SetBoolFlag(values, NonLocalizable::MouseMiddleClickSpanningMultipleZonesID, SettingId::MouseMiddleClickSpanningMultipleZones, m_settings.mouseMiddleClickSpanningMultipleZones);
|
||||||
SetBoolFlag(values, NonLocalizable::OverrideSnapHotKeysID, SettingId::OverrideSnapHotkeys, m_settings.overrideSnapHotkeys);
|
SetBoolFlag(values, NonLocalizable::OverrideSnapHotKeysID, SettingId::OverrideSnapHotkeys, m_settings.overrideSnapHotkeys);
|
||||||
SetBoolFlag(values, NonLocalizable::MoveWindowAcrossMonitorsID, SettingId::MoveWindowAcrossMonitors, m_settings.moveWindowAcrossMonitors);
|
SetBoolFlag(values, NonLocalizable::MoveWindowAcrossMonitorsID, SettingId::MoveWindowAcrossMonitors, m_settings.moveWindowAcrossMonitors);
|
||||||
SetBoolFlag(values, NonLocalizable::MoveWindowsBasedOnPositionID, SettingId::MoveWindowsBasedOnPosition, m_settings.moveWindowsBasedOnPosition);
|
SetBoolFlag(values, NonLocalizable::MoveWindowsBasedOnPositionID, SettingId::MoveWindowsBasedOnPosition, m_settings.moveWindowsBasedOnPosition);
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ struct Settings
|
|||||||
// The values specified here are the defaults.
|
// The values specified here are the defaults.
|
||||||
bool shiftDrag = true;
|
bool shiftDrag = true;
|
||||||
bool mouseSwitch = false;
|
bool mouseSwitch = false;
|
||||||
|
bool mouseMiddleClickSpanningMultipleZones = false;
|
||||||
bool displayChange_moveWindows = false;
|
bool displayChange_moveWindows = false;
|
||||||
bool zoneSetChange_flashZones = false;
|
bool zoneSetChange_flashZones = false;
|
||||||
bool zoneSetChange_moveWindows = false;
|
bool zoneSetChange_moveWindows = false;
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ enum class SettingId
|
|||||||
{
|
{
|
||||||
ShiftDrag = 0,
|
ShiftDrag = 0,
|
||||||
MouseSwitch,
|
MouseSwitch,
|
||||||
|
MouseMiddleClickSpanningMultipleZones,
|
||||||
OverrideSnapHotkeys,
|
OverrideSnapHotkeys,
|
||||||
MoveWindowAcrossMonitors,
|
MoveWindowAcrossMonitors,
|
||||||
MoveWindowsBasedOnPosition,
|
MoveWindowsBasedOnPosition,
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ namespace Microsoft.PowerToys.Settings.UI.Library
|
|||||||
FancyzonesShiftDrag = new BoolProperty(ConfigDefaults.DefaultFancyzonesShiftDrag);
|
FancyzonesShiftDrag = new BoolProperty(ConfigDefaults.DefaultFancyzonesShiftDrag);
|
||||||
FancyzonesOverrideSnapHotkeys = new BoolProperty();
|
FancyzonesOverrideSnapHotkeys = new BoolProperty();
|
||||||
FancyzonesMouseSwitch = new BoolProperty();
|
FancyzonesMouseSwitch = new BoolProperty();
|
||||||
|
FancyzonesMouseMiddleClickSpanningMultipleZones = new BoolProperty();
|
||||||
FancyzonesMoveWindowsAcrossMonitors = new BoolProperty();
|
FancyzonesMoveWindowsAcrossMonitors = new BoolProperty();
|
||||||
FancyzonesMoveWindowsBasedOnPosition = new BoolProperty();
|
FancyzonesMoveWindowsBasedOnPosition = new BoolProperty();
|
||||||
FancyzonesOverlappingZonesAlgorithm = new IntProperty();
|
FancyzonesOverlappingZonesAlgorithm = new IntProperty();
|
||||||
@@ -60,6 +61,9 @@ namespace Microsoft.PowerToys.Settings.UI.Library
|
|||||||
[JsonPropertyName("fancyzones_mouseSwitch")]
|
[JsonPropertyName("fancyzones_mouseSwitch")]
|
||||||
public BoolProperty FancyzonesMouseSwitch { get; set; }
|
public BoolProperty FancyzonesMouseSwitch { get; set; }
|
||||||
|
|
||||||
|
[JsonPropertyName("fancyzones_mouseMiddleClickSpanningMultipleZones")]
|
||||||
|
public BoolProperty FancyzonesMouseMiddleClickSpanningMultipleZones { get; set; }
|
||||||
|
|
||||||
[JsonPropertyName("fancyzones_overrideSnapHotkeys")]
|
[JsonPropertyName("fancyzones_overrideSnapHotkeys")]
|
||||||
public BoolProperty FancyzonesOverrideSnapHotkeys { get; set; }
|
public BoolProperty FancyzonesOverrideSnapHotkeys { get; set; }
|
||||||
|
|
||||||
|
|||||||
@@ -81,6 +81,11 @@
|
|||||||
x:Uid="FancyZones_MouseDragCheckBoxControl_Header"
|
x:Uid="FancyZones_MouseDragCheckBoxControl_Header"
|
||||||
IsChecked="{x:Bind Mode=TwoWay, Path=ViewModel.MouseSwitch}" />
|
IsChecked="{x:Bind Mode=TwoWay, Path=ViewModel.MouseSwitch}" />
|
||||||
</labs:SettingsCard>
|
</labs:SettingsCard>
|
||||||
|
<labs:SettingsCard ContentAlignment="Left">
|
||||||
|
<CheckBox
|
||||||
|
x:Uid="FancyZones_MouseMiddleClickSpanningMultipleZonesCheckBoxControl_Header"
|
||||||
|
IsChecked="{x:Bind Mode=TwoWay, Path=ViewModel.MouseMiddleClickSpanningMultipleZones}" />
|
||||||
|
</labs:SettingsCard>
|
||||||
<labs:SettingsCard ContentAlignment="Left">
|
<labs:SettingsCard ContentAlignment="Left">
|
||||||
<CheckBox
|
<CheckBox
|
||||||
x:Uid="FancyZones_ShowZonesOnAllMonitorsCheckBoxControl"
|
x:Uid="FancyZones_ShowZonesOnAllMonitorsCheckBoxControl"
|
||||||
|
|||||||
@@ -897,6 +897,9 @@
|
|||||||
<data name="FancyZones_MouseDragCheckBoxControl_Header.Content" xml:space="preserve">
|
<data name="FancyZones_MouseDragCheckBoxControl_Header.Content" xml:space="preserve">
|
||||||
<value>Use a non-primary mouse button to toggle zone activation</value>
|
<value>Use a non-primary mouse button to toggle zone activation</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="FancyZones_MouseMiddleClickSpanningMultipleZonesCheckBoxControl_Header.Content" xml:space="preserve">
|
||||||
|
<value>Use middle-click mouse button to toggle multiple zones spanning</value>
|
||||||
|
</data>
|
||||||
<data name="FancyZones_MoveWindowsAcrossAllMonitorsCheckBoxControl.Content" xml:space="preserve">
|
<data name="FancyZones_MoveWindowsAcrossAllMonitorsCheckBoxControl.Content" xml:space="preserve">
|
||||||
<value>Move windows between zones across all monitors</value>
|
<value>Move windows between zones across all monitors</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -74,6 +74,7 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
|
|||||||
|
|
||||||
_shiftDrag = Settings.Properties.FancyzonesShiftDrag.Value;
|
_shiftDrag = Settings.Properties.FancyzonesShiftDrag.Value;
|
||||||
_mouseSwitch = Settings.Properties.FancyzonesMouseSwitch.Value;
|
_mouseSwitch = Settings.Properties.FancyzonesMouseSwitch.Value;
|
||||||
|
_mouseMiddleButtonSpanningMultipleZones = Settings.Properties.FancyzonesMouseMiddleClickSpanningMultipleZones.Value;
|
||||||
_overrideSnapHotkeys = Settings.Properties.FancyzonesOverrideSnapHotkeys.Value;
|
_overrideSnapHotkeys = Settings.Properties.FancyzonesOverrideSnapHotkeys.Value;
|
||||||
_moveWindowsAcrossMonitors = Settings.Properties.FancyzonesMoveWindowsAcrossMonitors.Value;
|
_moveWindowsAcrossMonitors = Settings.Properties.FancyzonesMoveWindowsAcrossMonitors.Value;
|
||||||
_moveWindowBehaviour = Settings.Properties.FancyzonesMoveWindowsBasedOnPosition.Value ? MoveWindowBehaviour.MoveWindowBasedOnPosition : MoveWindowBehaviour.MoveWindowBasedOnZoneIndex;
|
_moveWindowBehaviour = Settings.Properties.FancyzonesMoveWindowsBasedOnPosition.Value ? MoveWindowBehaviour.MoveWindowBasedOnPosition : MoveWindowBehaviour.MoveWindowBasedOnZoneIndex;
|
||||||
@@ -147,6 +148,7 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
|
|||||||
private bool _isEnabled;
|
private bool _isEnabled;
|
||||||
private bool _shiftDrag;
|
private bool _shiftDrag;
|
||||||
private bool _mouseSwitch;
|
private bool _mouseSwitch;
|
||||||
|
private bool _mouseMiddleButtonSpanningMultipleZones;
|
||||||
private bool _overrideSnapHotkeys;
|
private bool _overrideSnapHotkeys;
|
||||||
private bool _moveWindowsAcrossMonitors;
|
private bool _moveWindowsAcrossMonitors;
|
||||||
private MoveWindowBehaviour _moveWindowBehaviour;
|
private MoveWindowBehaviour _moveWindowBehaviour;
|
||||||
@@ -276,6 +278,24 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool MouseMiddleClickSpanningMultipleZones
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _mouseMiddleButtonSpanningMultipleZones;
|
||||||
|
}
|
||||||
|
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (value != _mouseMiddleButtonSpanningMultipleZones)
|
||||||
|
{
|
||||||
|
_mouseMiddleButtonSpanningMultipleZones = value;
|
||||||
|
Settings.Properties.FancyzonesMouseMiddleClickSpanningMultipleZones.Value = value;
|
||||||
|
NotifyPropertyChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public string GetSettingsSubPath()
|
public string GetSettingsSubPath()
|
||||||
{
|
{
|
||||||
return settingsConfigFileFolder + "\\" + ModuleName;
|
return settingsConfigFileFolder + "\\" + ModuleName;
|
||||||
|
|||||||
Reference in New Issue
Block a user