Skip to content

Commit 8b4903f

Browse files
committed
Make "pick window" button in preferences page works for Gnome 43.1
1 parent aa71064 commit 8b4903f

File tree

2 files changed

+33
-32
lines changed

2 files changed

+33
-32
lines changed

src/dbus/services.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { load } from '@me/utils/io'
1313
// types
1414
import { WindowActor } from '@gi/Meta'
1515
import { Me } from '@global'
16+
import { Actor } from '@gi/Clutter'
1617
// --------------------------------------------------------------- [end imports]
1718

1819
const iface = load (`${Me.path}/dbus/iface.xml`)
@@ -53,16 +54,17 @@ export class Services {
5354
.filter ((e) => e.toString ().includes (effect_name))
5455
.forEach ((e) => target.remove_effect (e))
5556

56-
// Get wm_class_instance property of window, then pass it DBus
57-
// client
58-
const type_str = target.toString ()
57+
let actor: Actor | null = target
5958

60-
let actor = target as WindowActor
61-
if (type_str.includes ('MetaSurfaceActor')) {
62-
actor = target.get_parent () as WindowActor
59+
// User will pick to a Meta.SurfaceActor in most time, let's find the
60+
// associate Meta.WindowActor
61+
for (let i = 0; i < 2; i++) {
62+
if (actor == null || actor instanceof WindowActor) break
63+
// If picked actor is not a Meta.WindowActor, search it's parent
64+
actor = actor.get_parent ()
6365
}
6466

65-
if (!actor.toString ().includes ('WindowActor')) {
67+
if (!(actor instanceof WindowActor)) {
6668
_send_wm_class_instance ('window-not-found')
6769
return
6870
}

src/extension.ts

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,34 @@
11
// imports.gi
2-
import { Point } from '@gi/Graphene'
3-
import * as Clutter from '@gi/Clutter'
4-
import * as GLib from '@gi/GLib'
5-
import { Settings } from '@gi/Gio'
6-
import { WindowActor, WindowClientType } from '@gi/Meta'
2+
import { Point } from '@gi/Graphene'
3+
import * as Clutter from '@gi/Clutter'
4+
import { Settings } from '@gi/Gio'
5+
import { WindowClientType } from '@gi/Meta'
76

87
// gnome-shell modules
9-
import { WindowPreview } from '@imports/ui/windowPreview'
10-
import { WorkspaceGroup } from '@imports/ui/workspaceAnimation'
11-
import BackgroundMenu from '@imports/ui/backgroundMenu'
12-
import { layoutManager } from '@imports/ui/main'
13-
import { overview } from '@imports/ui/main'
8+
import { WindowPreview } from '@imports/ui/windowPreview'
9+
import { WorkspaceGroup } from '@imports/ui/workspaceAnimation'
10+
import BackgroundMenu from '@imports/ui/backgroundMenu'
11+
import { layoutManager } from '@imports/ui/main'
12+
import { overview } from '@imports/ui/main'
1413

1514
// local modules
16-
import { constants } from '@me/utils/constants'
17-
import { stackMsg, _log } from '@me/utils/log'
18-
import * as UI from '@me/utils/ui'
19-
import { connections } from '@me/utils/connections'
20-
import { SchemasKeys, settings } from '@me/utils/settings'
21-
import { Services } from '@me/dbus/services'
22-
import { LinearFilterEffect } from '@me/effect/linear_filter_effect'
23-
import { RoundedCornersEffect } from '@me/effect/rounded_corners_effect'
24-
import { init_translations } from '@me/utils/i18n'
25-
import { WindowActorTracker } from '@me/manager/effect_manager'
15+
import { constants } from '@me/utils/constants'
16+
import { stackMsg, _log } from '@me/utils/log'
17+
import * as UI from '@me/utils/ui'
18+
import { connections } from '@me/utils/connections'
19+
import { SchemasKeys, settings } from '@me/utils/settings'
20+
import { Services } from '@me/dbus/services'
21+
import { LinearFilterEffect } from '@me/effect/linear_filter_effect'
22+
import { RoundedCornersEffect } from '@me/effect/rounded_corners_effect'
23+
import { init_translations } from '@me/utils/i18n'
24+
import { WindowActorTracker } from '@me/manager/effect_manager'
2625

2726
// types, which will be removed in output
28-
import { RoundedCornersCfg } from '@me/utils/types'
29-
import { ExtensionsWindowActor } from '@me/utils/types'
30-
import { Window } from '@gi/Meta'
31-
import { global } from '@global'
32-
import { registerClass } from '@gi/GObject'
27+
import { RoundedCornersCfg } from '@me/utils/types'
28+
import { ExtensionsWindowActor } from '@me/utils/types'
29+
import { Window, WindowActor } from '@gi/Meta'
30+
import { global } from '@global'
31+
import { registerClass } from '@gi/GObject'
3332

3433
// --------------------------------------------------------------- [end imports]
3534

0 commit comments

Comments
 (0)