Windows에서 문제를 숨기지 않는 팝업 메뉴를 수정하는 해결책을 찾았습니다.
그냥 다음 코드를 추가 (내 코드는 C에 있지만 당신은 파이썬이든으로 변경할 수 있습니다) 메뉴 팝업 전에 :
GtkWidget *hidden_window;
hidden_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_resizable (GTK_WINDOW (hidden_window), FALSE);
gtk_window_set_decorated (GTK_WINDOW (hidden_window), FALSE);
gtk_window_set_skip_taskbar_hint (GTK_WINDOW (hidden_window), TRUE);
gtk_window_set_skip_pager_hint (GTK_WINDOW (hidden_window), TRUE);
gtk_widget_set_size_request (hidden_window, 0, 0);
gtk_window_set_transient_for (GTK_WINDOW (hidden_window), GTK_WINDOW (widget)); //widget is your main window, this is to hide dummy window from taskbar
gtk_window_set_position (GTK_WINDOW (hidden_window), GTK_WIN_POS_MOUSE);
gtk_widget_set_events (hidden_window, GDK_FOCUS_CHANGE_MASK);
g_signal_connect (G_OBJECT (hidden_window),
"focus-out-event",
G_CALLBACK (on_hidden_window_focus_out),
NULL);
gtk_widget_show_all (hidden_window);
gtk_widget_grab_focus (hidden_window);
또한이 기능을 추가하십시오 :
static void on_hidden_window_focus_out(GtkWidget *widget,
GdkEventFocus *event,
gpointer data)
{
gtk_widget_destroy (widget);
}
아이디어는 마우스 위치에 1x1 최상위 창을 만들고 초점을 잡고 초점을 맞출 때 파괴 기능을 추가하는 것입니다.
감사합니다. 이 다른 문제는 그리 큰 문제가 아닙니다. 나는 그 문제와 함께 살 수있을 것 같습니다. – wodemoneke