Skip to content

Commit cce9f80

Browse files
authored
Merge pull request #1 from harshadgavali/main
Merge upstream
2 parents bd6e478 + 448fd76 commit cce9f80

File tree

6 files changed

+74
-10
lines changed

6 files changed

+74
-10
lines changed

extension/common/prefs.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,11 @@ function bind_boolean_value(key: BooleanSettingsKeys, settings: GioSettings, bui
3737
*/
3838
function bind_combo_box(key: EnumSettingsKeys, settings: GioSettings, builder: GtkBuilder) {
3939
const comboRow = builder.get_object<Adw.ComboRow>(key);
40-
comboRow.set_selected(settings.get_enum(key));
40+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
41+
const enum_key = key as any;
42+
comboRow.set_selected(settings.get_enum(enum_key));
4143
comboRow.connect('notify::selected', () => {
42-
settings.set_enum(key, comboRow.selected);
44+
settings.set_enum(enum_key, comboRow.selected);
4345
});
4446
}
4547

@@ -86,6 +88,7 @@ function bindPrefsSettings(builder: GtkBuilder, settings: Gio.Settings) {
8688

8789
bind_combo_box('pinch-3-finger-gesture', settings, builder);
8890
bind_combo_box('pinch-4-finger-gesture', settings, builder);
91+
bind_combo_box('overview-navifation-states', settings, builder);
8992
}
9093

9194
function loadCssProvider(styleManager: Adw.StyleManager,uiDir: string) {

extension/common/settings.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,13 @@ export enum PinchGestureType {
99
CLOSE_DOCUMENT = 3,
1010
}
1111

12+
// define enum
13+
export enum OverviewNavigationState {
14+
CYCLIC = 0,
15+
GNOME = 1,
16+
WINDOW_PICKER_ONLY = 2,
17+
}
18+
1219
export enum ForwardBackKeyBinds {
1320
Default = 0,
1421
'Forward/Backward' = 1,
@@ -40,7 +47,8 @@ export type DoubleSettingsKeys =
4047

4148
export type EnumSettingsKeys =
4249
'pinch-3-finger-gesture' |
43-
'pinch-4-finger-gesture'
50+
'pinch-4-finger-gesture' |
51+
'overview-navifation-states'
4452
;
4553

4654
export type MiscSettingsKeys =
@@ -73,7 +81,8 @@ type Enum_Functions<K extends EnumSettingsKeys, T> = {
7381
}
7482

7583
type SettingsEnumFunctions =
76-
Enum_Functions<'pinch-3-finger-gesture' | 'pinch-4-finger-gesture', PinchGestureType>
84+
Enum_Functions<'pinch-3-finger-gesture' | 'pinch-4-finger-gesture', PinchGestureType> &
85+
Enum_Functions<'overview-navifation-states', OverviewNavigationState>
7786
;
7887

7988
type Misc_Functions<K extends MiscSettingsKeys, T extends string> = {

extension/extension.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ class Extension {
8484
}
8585

8686
this._extensions.push(
87-
new OverviewRoundTripGestureExtension(),
87+
new OverviewRoundTripGestureExtension(this.settings.get_enum('overview-navifation-states')),
8888
new GestureExtension(),
8989
);
9090

extension/schemas/org.gnome.shell.extensions.gestureImprovements.gschema.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@
66
<value value='2' nick='CLOSE_WINDOW' />
77
<value value='3' nick='CLOSE_DOCUMENT' />
88
</enum>
9+
<!-- -->
10+
<enum id='org.gnome.shell.extensions.gestureImprovements.overview-navigation-states'>
11+
<value value='0' nick='CYCLIC' />
12+
<value value='1' nick='GNOME' />
13+
<value value='2' nick='WINDOW_PICKER_ONLY' />
14+
</enum>
915
<schema id="org.gnome.shell.extensions.gestureImprovements" path="/org/gnome/shell/extensions/gestureImprovements/">
1016
<!-- See also: https://docs.gtk.org/glib/gvariant-format-strings.html -->
1117
<key name="touchpad-speed-scale" type="d">
@@ -60,6 +66,10 @@
6066
<default>'SHOW_DESKTOP'</default>
6167
<description>Gesture for 4 finger pinch</description>
6268
</key>
69+
<key name="overview-navifation-states" enum="org.gnome.shell.extensions.gestureImprovements.overview-navigation-states">
70+
<default>'CYCLIC'</default>
71+
<description>Gesture for 4 finger pinch</description>
72+
</key>
6373
<!--
6474
0 -> Default
6575
1 -> Forward/Back

extension/src/overviewRoundTrip.ts

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import Clutter from '@gi-types/clutter';
22
import Shell from '@gi-types/shell';
33
import { global, imports } from 'gnome-shell';
4+
import { OverviewNavigationState } from '../common/settings';
45
import { ExtSettings, OverviewControlsState } from '../constants';
56
import { createSwipeTracker } from './swipeTracker';
67

@@ -24,7 +25,10 @@ export class OverviewRoundTripGestureExtension implements ISubExtension {
2425
private _connectors: number[];
2526
private _shownEventId = 0;
2627
private _hiddenEventId = 0;
27-
constructor() {
28+
private _navigationStates: OverviewNavigationState;
29+
30+
constructor(navigationStates: OverviewNavigationState) {
31+
this._navigationStates = navigationStates;
2832
this._overviewControls = Main.overview._overview._controls;
2933
this._stateAdjustment = this._overviewControls._stateAdjustment;
3034
this._oldGetStateTransitionParams = this._overviewControls._stateAdjustment.getStateTransitionParams;
@@ -98,12 +102,10 @@ export class OverviewRoundTripGestureExtension implements ISubExtension {
98102

99103
_gestureBegin(tracker: typeof SwipeTracker.prototype): void {
100104
const _tracker = {
101-
confirmSwipe: (distance: number, snapPoints: number[], currentProgress: number, cancelProgress: number) => {
102-
snapPoints.unshift(OverviewControlsState.APP_GRID_P);
103-
snapPoints.push(OverviewControlsState.HIDDEN_N);
105+
confirmSwipe: (distance: number, _snapPoints: number[], currentProgress: number, cancelProgress: number) => {
104106
tracker.confirmSwipe(
105107
distance,
106-
snapPoints,
108+
this._getGestureSnapPoints(),
107109
currentProgress,
108110
cancelProgress,
109111
);
@@ -171,4 +173,28 @@ export class OverviewRoundTripGestureExtension implements ISubExtension {
171173

172174
return progress;
173175
}
176+
177+
private _getGestureSnapPoints(): number[] {
178+
switch (this._navigationStates) {
179+
case OverviewNavigationState.CYCLIC:
180+
return [
181+
OverviewControlsState.APP_GRID_P,
182+
OverviewControlsState.HIDDEN,
183+
OverviewControlsState.WINDOW_PICKER,
184+
OverviewControlsState.APP_GRID,
185+
OverviewControlsState.HIDDEN_N,
186+
];
187+
case OverviewNavigationState.GNOME:
188+
return [
189+
OverviewControlsState.HIDDEN,
190+
OverviewControlsState.WINDOW_PICKER,
191+
OverviewControlsState.APP_GRID,
192+
];
193+
case OverviewNavigationState.WINDOW_PICKER_ONLY:
194+
return [
195+
OverviewControlsState.HIDDEN,
196+
OverviewControlsState.WINDOW_PICKER,
197+
];
198+
}
199+
}
174200
}

extension/ui/customizations.ui

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,14 @@
33
<requires lib="gtk" version="4.0" />
44
<requires lib="libadwaita" version="1.0" />
55

6+
<object class="GtkStringList" id="overview_navigation_states_model">
7+
<items>
8+
<item translatable="yes">Cyclic</item>
9+
<item translatable="yes">GNOME</item>
10+
<item translatable="yes">Overview only</item>
11+
</items>
12+
</object>
13+
614
<object class="AdwPreferencesPage" id="customizations_page">
715
<property name="title">Misc</property>
816
<property name="icon-name">emblem-system-symbolic</property>
@@ -79,6 +87,14 @@
7987
</object>
8088
</child>
8189

90+
<!-- Overview navigation states -->
91+
<child>
92+
<object class="AdwComboRow" id="overview-navifation-states">
93+
<property name="title" translatable="yes">Overview navigation states</property>
94+
<property name="model">overview_navigation_states_model</property>
95+
</object>
96+
</child>
97+
8298
<!-- Window switcher popup delay (ms) -->
8399
<child>
84100
<object class="AdwActionRow">

0 commit comments

Comments
 (0)