diff --git a/demos/gtk-demo/demo.gresource.xml b/demos/gtk-demo/demo.gresource.xml index 7e4046cb6a..f6477002ce 100644 --- a/demos/gtk-demo/demo.gresource.xml +++ b/demos/gtk-demo/demo.gresource.xml @@ -202,7 +202,6 @@ peg_solitaire.c pickers.c pixbufs.c - popover.c printing.c revealer.c rotated_text.c @@ -240,9 +239,6 @@ messages.txt apple-red.png - - popover.ui - glarea-gl.fs.glsl glarea-gl.vs.glsl diff --git a/demos/gtk-demo/meson.build b/demos/gtk-demo/meson.build index 08694a7355..8c2392c29e 100644 --- a/demos/gtk-demo/meson.build +++ b/demos/gtk-demo/meson.build @@ -54,7 +54,6 @@ demos = files([ 'peg_solitaire.c', 'pickers.c', 'pixbufs.c', - 'popover.c', 'printing.c', 'revealer.c', 'rotated_text.c', diff --git a/demos/gtk-demo/popover.c b/demos/gtk-demo/popover.c deleted file mode 100644 index f0ab27d255..0000000000 --- a/demos/gtk-demo/popover.c +++ /dev/null @@ -1,185 +0,0 @@ -/* Popovers - * - * A bubble-like window containing contextual information or options. - * GtkPopovers can be attached to any widget, and will be displayed - * within the same window, but on top of all its content. - */ - -#include - -static void -toggle_changed_cb (GtkToggleButton *button, - GtkWidget *popover) -{ - gtk_widget_set_visible (popover, - gtk_toggle_button_get_active (button)); -} - -static GtkWidget * -create_popover (GtkWidget *parent, - GtkWidget *child, - GtkPositionType pos) -{ - GtkWidget *popover; - - popover = gtk_popover_new (); - gtk_widget_set_parent (popover, parent); - gtk_popover_set_position (GTK_POPOVER (popover), pos); - gtk_container_add (GTK_CONTAINER (popover), child); - gtk_widget_set_margin_start (child, 6); - gtk_widget_set_margin_end (child, 6); - gtk_widget_set_margin_top (child, 6); - gtk_widget_set_margin_bottom (child, 6); - gtk_widget_show (child); - - return popover; -} - -static GtkWidget * -create_complex_popover (GtkWidget *parent, - GtkPositionType pos) -{ - GtkWidget *popover, *window, *content; - GtkBuilder *builder; - - builder = gtk_builder_new (); - gtk_builder_add_from_resource (builder, "/popover/popover.ui", NULL); - window = GTK_WIDGET (gtk_builder_get_object (builder, "window")); - content = gtk_bin_get_child (GTK_BIN (window)); - g_object_ref (content); - gtk_container_remove (GTK_CONTAINER (gtk_widget_get_parent (content)), - content); - gtk_widget_destroy (window); - g_object_unref (builder); - - popover = create_popover (parent, content, GTK_POS_BOTTOM); - g_object_unref (content); - - return popover; -} - -static void -entry_size_allocate_cb (GtkEntry *entry, - int width, - int height, - int baseline, - gpointer user_data) -{ - GtkEntryIconPosition popover_pos; - GtkPopover *popover = user_data; - cairo_rectangle_int_t rect; - - if (gtk_widget_is_visible (GTK_WIDGET (popover))) - { - popover_pos = - GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (entry), - "popover-icon-pos")); - gtk_entry_get_icon_area (entry, popover_pos, &rect); - gtk_popover_set_pointing_to (GTK_POPOVER (popover), &rect); - } -} - -static void -entry_icon_press_cb (GtkEntry *entry, - GtkEntryIconPosition icon_pos, - gpointer user_data) -{ - GtkWidget *popover = user_data; - cairo_rectangle_int_t rect; - - gtk_entry_get_icon_area (entry, icon_pos, &rect); - gtk_popover_set_pointing_to (GTK_POPOVER (popover), &rect); - gtk_widget_show (popover); - - g_object_set_data (G_OBJECT (entry), "popover-icon-pos", - GUINT_TO_POINTER (icon_pos)); -} - -static void -day_selected_cb (GtkCalendar *calendar, - gpointer user_data) -{ - cairo_rectangle_int_t rect; - GtkWidget *popover; - GdkEvent *event; - gdouble x, y; - GtkWidget *widget; - - event = gtk_get_current_event (); - - if (gdk_event_get_event_type (event) != GDK_BUTTON_PRESS) - return; - - gdk_event_get_position (event, &x, &y); - widget = gtk_native_get_for_surface (gdk_event_get_surface (event)); - gtk_widget_translate_coordinates (widget, - GTK_WIDGET (calendar), - x, y, - &rect.x, &rect.y); - rect.width = rect.height = 1; - - popover = create_popover (GTK_WIDGET (calendar), - gtk_entry_new (), - GTK_POS_BOTTOM); - gtk_popover_set_pointing_to (GTK_POPOVER (popover), &rect); - - gtk_widget_show (popover); - - gdk_event_unref (event); -} - -GtkWidget * -do_popover (GtkWidget *do_widget) -{ - static GtkWidget *window = NULL; - GtkWidget *popover, *box, *widget; - - if (!window) - { - window = gtk_window_new (); - gtk_window_set_title (GTK_WINDOW (window), "Popovers"); - box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 24); - gtk_widget_set_margin_start (box, 24); - gtk_widget_set_margin_end (box, 24); - gtk_widget_set_margin_top (box, 24); - gtk_widget_set_margin_bottom (box, 24); - gtk_container_add (GTK_CONTAINER (window), box); - - g_signal_connect (window, "destroy", - G_CALLBACK (gtk_widget_destroyed), &window); - - widget = gtk_toggle_button_new_with_label ("Button"); - popover = create_popover (widget, - gtk_label_new ("This popover does not grab input"), - GTK_POS_TOP); - gtk_popover_set_autohide (GTK_POPOVER (popover), FALSE); - g_signal_connect (widget, "toggled", - G_CALLBACK (toggle_changed_cb), popover); - gtk_container_add (GTK_CONTAINER (box), widget); - - widget = gtk_entry_new (); - popover = create_complex_popover (widget, GTK_POS_TOP); - gtk_entry_set_icon_from_icon_name (GTK_ENTRY (widget), - GTK_ENTRY_ICON_PRIMARY, "edit-find"); - gtk_entry_set_icon_from_icon_name (GTK_ENTRY (widget), - GTK_ENTRY_ICON_SECONDARY, "edit-clear"); - - g_signal_connect (widget, "icon-press", - G_CALLBACK (entry_icon_press_cb), popover); - g_signal_connect (widget, "size-allocate", - G_CALLBACK (entry_size_allocate_cb), popover); - gtk_container_add (GTK_CONTAINER (box), widget); - - widget = gtk_calendar_new (); - g_signal_connect (widget, "day-selected", - G_CALLBACK (day_selected_cb), NULL); - gtk_container_add (GTK_CONTAINER (box), widget); - } - - if (!gtk_widget_get_visible (window)) - gtk_widget_show (window); - else - gtk_widget_destroy (window); - - return window; -} diff --git a/demos/gtk-demo/popover.ui b/demos/gtk-demo/popover.ui deleted file mode 100644 index 956302d3a1..0000000000 --- a/demos/gtk-demo/popover.ui +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - Item 1 - - - Item 2 - - - Item 3 - - - Item 4 - - - Item 5 - - - Item 6 - - - Item 7 - - - Item 8 - - - Item 9 - - - Item 10 - - - - - - - vertical - 6 - - - 1 - edit-find - edit-clear - - - - - 1 - in - 100 - - - 1 - 1 - liststore1 - 0 - 0 - 2 - - - - - - - - - 0 - - - - - - - - - - - -