2021-12-10 (Fr) [長年日記]
_ gdk_window_raise が動かない
こんな簡単なテストプログラムなんだけど。
#include <gtk/gtk.h>
static GtkWidget *w1, *w2;
static gboolean swap(gpointer user_data)
{
static int ctr = 0;
if ((ctr++ & 1)) {
printf("1\n");
gdk_window_raise(gtk_widget_get_window(w1));
} else {
printf("2\n");
gdk_window_raise(gtk_widget_get_window(w2));
}
return TRUE;
}
int main(int argc, char **argv)
{
gtk_init(&argc, &argv);
GtkWidget *top = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(top);
GtkWidget *fixed = gtk_fixed_new();
gtk_container_add(GTK_CONTAINER(top), fixed);
gtk_widget_show(fixed);
w1 = gtk_button_new_with_label("foobar");
gtk_fixed_put(GTK_FIXED(fixed), w1, 0, 0);
gtk_widget_show(w1);
w2 = gtk_button_new_with_label("foobar");
gtk_fixed_put(GTK_FIXED(fixed), w2, 20, 10);
gtk_widget_show(w2);
g_timeout_add(1000, swap, NULL);
gtk_main();
return 0;
}
widget に子 widget を2つ、重なるように配置して、 交互に raise してる。
raise しない…
Wayland はおろか X11 でもダメ。
なんで?? 以前は動いてなかったか?
[ツッコミを入れる]