c-GTK4-如何获得移动窗口的坐标



在GTK的早期版本中,我们添加了一个必要的事件掩码,附加到configure-event

gtk_widget_add_events(GTK_WIDGET(window), GDK_CONFIGURE);
g_signal_connect(G_OBJECT(window), "configure-event",
G_CALLBACK(configure_callback), NULL);

我们从处理程序中得到了相应的x,y坐标。

void configure_callback(GtkWindow *window, 
GdkEvent *event, gpointer data) {

int x, y;
x = event->configure.x;
y = event->configure.y;
...
}

与此最相似的是GtkEventControllerMotion,但它是用于鼠标指针,而不用于窗口移动事件。

如何在GTK4中做到这一点?

你不能。这是因为出于隐私和/或技术原因,并非所有窗口管理器/合成器都提供此信息。

例如,Wayland不提供窗口坐标,因为并不是每个Wayland合成器都是2D矩形——例如,像cage或gamescope这样的kiosk合成器,或者像wxrd这样的VR合成器。

因此,GTK4的功能被删除。您需要使用特定于X11的API来获得这些信息,但请注意,您需要强制应用程序使用X11(在Wayland上的XWayland合成器上(

https://docs.gtk.org/gtk4/migrating-3to4.html#adapt-到gtkwindow api更改

最新更新