순수 Wayland 환경에서의 Popover 테스트
이 포스트에서는 순수 Wayland 환경에서 포커스 여부를 확인하기 위해 popover 기능을 테스트하는 C 코드 예제를 공유합니다. 예제에서는 텍스트 뷰에서 백스페이스 키를 누르면 popover가 나타나도록 구현하여, 위젯의 포커스 검증을 수행합니다.
void on_backspace (GtkTextView editor, GtkPopover popover)
{
puts ("on_backspace");
/*gtk_widget_show (popover);*/
gtk_popover_popup ((GtkPopover*) popover);
}
static void
activate (GtkApplication* app,
gpointer user_data)
{
GtkWidget* window;
GtkWidget* editor;
GtkWidget* popover;
GtkWidget* label;
GdkRectangle rect = { 0, 40, 10, 10 };
window = gtk_application_window_new (app);
label = gtk_label_new ("Popover");
popover = gtk_popover_new ();
gtk_popover_set_child ((GtkPopover*) popover, label);
gtk_widget_set_parent (popover, window);
gtk_popover_set_pointing_to ((GtkPopover*) popover, &rect);
editor = gtk_text_view_new ();
g_signal_connect (editor, "backspace", (GCallback) on_backspace, popover);
gtk_window_set_title (GTK_WINDOW (window), "Window");
gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);
gtk_window_set_child ((GtkWindow*) window, editor);
gtk_widget_show (window);
}
int
main (int argc,
char **argv)
{
GtkApplication *app;
int status;
app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE);
g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
status = g_application_run (G_APPLICATION (app), argc, argv);
g_object_unref (app);
return status;
}