diff options
author | Matthias Clasen <mclasen@redhat.com> | 2020-04-01 15:44:22 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2020-04-01 15:45:13 -0400 |
commit | e31bbb41d225dd1663e6927ef4096bf6144ec514 (patch) | |
tree | 3ef28e61efffdcec5311a08b2810eb52dca6d674 | |
parent | 9c948909ac2c340103144ee16e382782f02af608 (diff) | |
download | gtk+-e31bbb41d225dd1663e6927ef4096bf6144ec514.tar.gz |
gtk-demo: Remove the popover demo
It doesn't work anymore, since popovers now need
support in the parent, and we don't really need
a demo just for popovers. They are used everywhere
already.
Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/2429
-rw-r--r-- | demos/gtk-demo/demo.gresource.xml | 4 | ||||
-rw-r--r-- | demos/gtk-demo/meson.build | 1 | ||||
-rw-r--r-- | demos/gtk-demo/popover.c | 185 | ||||
-rw-r--r-- | demos/gtk-demo/popover.ui | 85 |
4 files changed, 0 insertions, 275 deletions
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 @@ <file>peg_solitaire.c</file> <file>pickers.c</file> <file>pixbufs.c</file> - <file>popover.c</file> <file>printing.c</file> <file>revealer.c</file> <file>rotated_text.c</file> @@ -240,9 +239,6 @@ <file>messages.txt</file> <file>apple-red.png</file> </gresource> - <gresource prefix="/popover"> - <file>popover.ui</file> - </gresource> <gresource prefix="/glarea"> <file>glarea-gl.fs.glsl</file> <file>glarea-gl.vs.glsl</file> 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 <gtk/gtk.h> - -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 @@ -<?xml version="1.0" encoding="UTF-8"?> -<interface> - <object class="GtkListStore" id="liststore1"> - <columns> - <column type="gchararray"/> - </columns> - <data> - <row> - <col id="0" translatable="yes">Item 1</col> - </row> - <row> - <col id="0" translatable="yes">Item 2</col> - </row> - <row> - <col id="0" translatable="yes">Item 3</col> - </row> - <row> - <col id="0" translatable="yes">Item 4</col> - </row> - <row> - <col id="0" translatable="yes">Item 5</col> - </row> - <row> - <col id="0" translatable="yes">Item 6</col> - </row> - <row> - <col id="0" translatable="yes">Item 7</col> - </row> - <row> - <col id="0" translatable="yes">Item 8</col> - </row> - <row> - <col id="0" translatable="yes">Item 9</col> - </row> - <row> - <col id="0" translatable="yes">Item 10</col> - </row> - </data> - </object> - <object class="GtkWindow" id="window"> - <child> - <object class="GtkBox" id="box"> - <property name="orientation">vertical</property> - <property name="spacing">6</property> - <child> - <object class="GtkEntry" id="entry1"> - <property name="can-focus">1</property> - <property name="primary-icon-name">edit-find</property> - <property name="secondary-icon-name">edit-clear</property> - </object> - </child> - <child> - <object class="GtkScrolledWindow" id="scrolledwindow1"> - <property name="can-focus">1</property> - <property name="shadow-type">in</property> - <property name="max-content-height">100</property> - <child> - <object class="GtkTreeView" id="treeview1"> - <property name="can-focus">1</property> - <property name="vexpand">1</property> - <property name="model">liststore1</property> - <property name="headers-visible">0</property> - <property name="enable-search">0</property> - <property name="search-column">2</property> - <child internal-child="selection"> - <object class="GtkTreeSelection" id="treeview-selection1"/> - </child> - <child> - <object class="GtkTreeViewColumn" id="column1"> - <child> - <object class="GtkCellRendererText" id="cellrenderer1"/> - <attributes> - <attribute name="text">0</attribute> - </attributes> - </child> - </object> - </child> - </object> - </child> - </object> - </child> - </object> - </child> - </object> -</interface> |