Это ужасная ужасная идея, но вы можете переопределить обработчик "focus-out-event" для своего окна и вызвать его gtk_window_present
.
Что-то вроде gksu делает:
static gboolean
focus_out_cb (GtkWidget *widget, GdkEventFocus *event, gpointer user_data)
{
gtk_window_present (GTK_WINDOW(widget));
return TRUE;
}
//in your initialization code for your window...
/* make sure that our window will always have the focus */
g_signal_connect (G_OBJECT(mywindow), "focus-out-event",
G_CALLBACK(focus_out_cb), NULL);
Надеемся, что это дает дополнительное преимущество: если ваше приложение останавливает зависание, сигнал для события focus-out, скорее всего, не будет обработан. Я не уверен, как GTK выполняет потоки пользовательского интерфейса, но я думаю, что это должно быть правдой.