トップ «前の日記 最新 次の日記»

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 でもダメ。

なんで?? 以前は動いてなかったか?


編集 パスワード変更