Skip to content

Commit af2c060

Browse files
nimenkobirneee
authored andcommitted
fix: Avoid Gdk.DisplayManager usage in place_pointer_on() to prevent "gdk_display_manager_get() was called before gtk_init()" crash (pop-os#1769)
1 parent ee05337 commit af2c060

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

src/mod.d.ts

+13
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,7 @@ declare namespace Clutter {
212212
set_position(x: number, y: number): void;
213213
set_size(width: number, height: number): void;
214214
show(): void;
215+
get_context(): Clutter.Context;
215216
}
216217

217218
interface ActorBox {
@@ -222,6 +223,18 @@ declare namespace Clutter {
222223
get_text(): Readonly<string>;
223224
set_text(text: string | null): void;
224225
}
226+
227+
interface Seat extends GObject.Object {
228+
warp_pointer(x: number, y: number): void;
229+
}
230+
231+
interface Backend extends GObject.Object {
232+
get_default_seat(): Seat;
233+
}
234+
235+
interface Context extends GObject.Object {
236+
get_backend(): Backend;
237+
}
225238
}
226239

227240
declare namespace Meta {

src/window.ts

+1-5
Original file line numberDiff line numberDiff line change
@@ -701,11 +701,7 @@ function place_pointer_on(ext: Ext, win: Meta.Window) {
701701
y += 8;
702702
}
703703

704-
const display = Gdk.DisplayManager.get().get_default_display();
705-
706-
if (display) {
707-
display.get_default_seat().get_pointer().warp(display.get_default_screen(), x, y);
708-
}
704+
global.stage.get_context().get_backend().get_default_seat().warp_pointer(x, y);
709705
}
710706

711707
function pointer_already_on_window(meta: Meta.Window): boolean {

0 commit comments

Comments
 (0)