forked from AuroraMiddleware/gtk
popover: Drop ::relative-to
It is enough to just set the parent (and make the parent call gtk_native_check_resize in size_allocate). This commit removes the relative_to argument to the constructors of GtkPopover and GtkPopoverMenu, and updates all callers.
This commit is contained in:
parent
259f465e01
commit
a43d13aa74
@ -428,7 +428,7 @@ demo_application_window_init (DemoApplicationWindow *window)
|
||||
|
||||
gtk_widget_init_template (GTK_WIDGET (window));
|
||||
|
||||
popover = gtk_popover_menu_new_from_model (window->menubutton, window->toolmenu);
|
||||
popover = gtk_popover_menu_new_from_model (window->toolmenu);
|
||||
gtk_menu_button_set_popover (GTK_MENU_BUTTON (window->menubutton), popover);
|
||||
|
||||
g_action_map_add_action_entries (G_ACTION_MAP (window),
|
||||
|
@ -248,7 +248,8 @@ pressed_cb (GtkGesture *gesture,
|
||||
item = g_menu_item_new (_("_Paste"), "clipboard.paste");
|
||||
g_menu_append_item (menu, item);
|
||||
|
||||
popover = gtk_popover_menu_new_from_model (image, G_MENU_MODEL (menu));
|
||||
popover = gtk_popover_menu_new_from_model (G_MENU_MODEL (menu));
|
||||
gtk_widget_set_parent (popover, image);
|
||||
|
||||
gtk_popover_set_pointing_to (GTK_POPOVER (popover), &(GdkRectangle) { x, y, 1, 1});
|
||||
gtk_popover_popup (GTK_POPOVER (popover));
|
||||
|
@ -271,7 +271,8 @@ pressed_cb (GtkGesture *gesture,
|
||||
pos_x = x;
|
||||
pos_y = y;
|
||||
|
||||
menu = gtk_popover_new (widget);
|
||||
menu = gtk_popover_new ();
|
||||
gtk_widget_set_parent (menu, widget);
|
||||
gtk_popover_set_has_arrow (GTK_POPOVER (menu), FALSE);
|
||||
gtk_popover_set_pointing_to (GTK_POPOVER (menu), &(GdkRectangle){ x, y, 1, 1});
|
||||
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
|
||||
|
@ -158,7 +158,7 @@ static GtkWidget *
|
||||
create_menu_button (void)
|
||||
{
|
||||
GtkWidget *w = gtk_menu_button_new ();
|
||||
GtkWidget *popover = gtk_popover_new (NULL);
|
||||
GtkWidget *popover = gtk_popover_new ();
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (popover), gtk_button_new_with_label ("Hey!"));
|
||||
gtk_popover_set_autohide (GTK_POPOVER (popover), FALSE);
|
||||
|
@ -22,7 +22,8 @@ create_popover (GtkWidget *parent,
|
||||
{
|
||||
GtkWidget *popover;
|
||||
|
||||
popover = gtk_popover_new (parent);
|
||||
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);
|
||||
g_object_set (child, "margin", 6, NULL);
|
||||
|
@ -448,7 +448,7 @@ do_sliding_puzzle (GtkWidget *do_widget)
|
||||
gtk_grid_attach (GTK_GRID (tweaks), apply, 1, 2, 1, 1);
|
||||
g_signal_connect (apply, "clicked", G_CALLBACK (reconfigure), NULL);
|
||||
|
||||
popover = gtk_popover_new (NULL);
|
||||
popover = gtk_popover_new ();
|
||||
gtk_container_add (GTK_CONTAINER (popover), tweaks);
|
||||
|
||||
tweak = gtk_menu_button_new ();
|
||||
|
@ -1630,9 +1630,10 @@ static void
|
||||
set_up_context_popover (GtkWidget *widget,
|
||||
GMenuModel *model)
|
||||
{
|
||||
GtkWidget *popover = gtk_popover_menu_new_from_model (widget, model);
|
||||
GtkWidget *popover = gtk_popover_menu_new_from_model (model);
|
||||
GtkGesture *gesture;
|
||||
|
||||
gtk_widget_set_parent (popover, widget);
|
||||
gtk_popover_set_has_arrow (GTK_POPOVER (popover), FALSE);
|
||||
gesture = gtk_gesture_click_new ();
|
||||
gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (gesture), GDK_BUTTON_SECONDARY);
|
||||
|
@ -5881,8 +5881,6 @@ GtkPopover
|
||||
gtk_popover_new
|
||||
gtk_popover_popup
|
||||
gtk_popover_popdown
|
||||
gtk_popover_set_relative_to
|
||||
gtk_popover_get_relative_to
|
||||
gtk_popover_set_pointing_to
|
||||
gtk_popover_get_pointing_to
|
||||
gtk_popover_set_position
|
||||
|
@ -152,7 +152,7 @@ create_menu_button (void)
|
||||
image = gtk_image_new ();
|
||||
gtk_image_set_from_icon_name (GTK_IMAGE (image), "emblem-system-symbolic");
|
||||
gtk_container_add (GTK_CONTAINER (widget), image);
|
||||
menu = gtk_popover_new (NULL);
|
||||
menu = gtk_popover_new ();
|
||||
gtk_menu_button_set_popover (GTK_MENU_BUTTON (widget), menu);
|
||||
|
||||
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
|
||||
|
@ -27,56 +27,11 @@ typedef struct _GtkPopoverAccessiblePrivate GtkPopoverAccessiblePrivate;
|
||||
|
||||
struct _GtkPopoverAccessiblePrivate
|
||||
{
|
||||
GtkWidget *widget;
|
||||
};
|
||||
|
||||
G_DEFINE_TYPE_WITH_CODE (GtkPopoverAccessible, gtk_popover_accessible, GTK_TYPE_CONTAINER_ACCESSIBLE,
|
||||
G_ADD_PRIVATE (GtkPopoverAccessible))
|
||||
|
||||
static void
|
||||
popover_update_relative_to (AtkObject *obj,
|
||||
GtkPopover *popover)
|
||||
{
|
||||
GtkPopoverAccessiblePrivate *priv;
|
||||
AtkObject *widget_accessible;
|
||||
GtkWidget *widget;
|
||||
|
||||
priv = gtk_popover_accessible_get_instance_private (GTK_POPOVER_ACCESSIBLE (obj));
|
||||
widget = gtk_popover_get_relative_to (popover);
|
||||
|
||||
if (priv->widget == widget)
|
||||
return;
|
||||
|
||||
if (priv->widget)
|
||||
{
|
||||
g_object_remove_weak_pointer (G_OBJECT (priv->widget),
|
||||
(gpointer*) &priv->widget);
|
||||
widget_accessible = gtk_widget_get_accessible (priv->widget);
|
||||
atk_object_remove_relationship (obj,
|
||||
ATK_RELATION_POPUP_FOR,
|
||||
widget_accessible);
|
||||
}
|
||||
|
||||
priv->widget = widget;
|
||||
|
||||
if (widget)
|
||||
{
|
||||
AtkObject *parent;
|
||||
|
||||
parent = gtk_widget_get_accessible (widget);
|
||||
|
||||
if (parent)
|
||||
atk_object_set_parent (obj, parent);
|
||||
|
||||
g_object_add_weak_pointer (G_OBJECT (priv->widget),
|
||||
(gpointer*) &priv->widget);
|
||||
widget_accessible = gtk_widget_get_accessible (widget);
|
||||
atk_object_add_relationship (obj,
|
||||
ATK_RELATION_POPUP_FOR,
|
||||
widget_accessible);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
popover_update_modality (AtkObject *object,
|
||||
GtkPopover *popover)
|
||||
@ -94,9 +49,7 @@ popover_notify_cb (GtkPopover *popover,
|
||||
|
||||
popover_accessible = gtk_widget_get_accessible (GTK_WIDGET (popover));
|
||||
|
||||
if (strcmp (g_param_spec_get_name (pspec), "relative-to") == 0)
|
||||
popover_update_relative_to (popover_accessible, popover);
|
||||
else if (strcmp (g_param_spec_get_name (pspec), "modal") == 0)
|
||||
if (strcmp (g_param_spec_get_name (pspec), "modal") == 0)
|
||||
popover_update_modality (popover_accessible, popover);
|
||||
}
|
||||
|
||||
@ -110,7 +63,6 @@ gtk_popover_accessible_initialize (AtkObject *obj,
|
||||
|
||||
g_signal_connect (popover, "notify",
|
||||
G_CALLBACK (popover_notify_cb), obj);
|
||||
popover_update_relative_to (obj, popover);
|
||||
popover_update_modality (obj, popover);
|
||||
|
||||
obj->role = ATK_ROLE_PANEL;
|
||||
@ -131,26 +83,11 @@ gtk_popover_accessible_ref_state_set (AtkObject *obj)
|
||||
return state_set;
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_popover_accessible_finalize (GObject *object)
|
||||
{
|
||||
GtkPopoverAccessiblePrivate *priv;
|
||||
|
||||
priv = gtk_popover_accessible_get_instance_private (GTK_POPOVER_ACCESSIBLE (object));
|
||||
|
||||
if (priv->widget)
|
||||
g_object_remove_weak_pointer (G_OBJECT (priv->widget),
|
||||
(gpointer*) &priv->widget);
|
||||
G_OBJECT_CLASS (gtk_popover_accessible_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_popover_accessible_class_init (GtkPopoverAccessibleClass *klass)
|
||||
{
|
||||
AtkObjectClass *class = ATK_OBJECT_CLASS (klass);
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
object_class->finalize = gtk_popover_accessible_finalize;
|
||||
class->initialize = gtk_popover_accessible_initialize;
|
||||
class->ref_state_set = gtk_popover_accessible_ref_state_set;
|
||||
}
|
||||
|
@ -259,7 +259,8 @@ do_popup (GtkColorSwatch *swatch)
|
||||
g_clear_pointer (&priv->popover, gtk_widget_unparent);
|
||||
|
||||
model = gtk_color_swatch_get_menu_model (swatch);
|
||||
priv->popover = gtk_popover_menu_new_from_model (GTK_WIDGET (swatch), model);
|
||||
priv->popover = gtk_popover_menu_new_from_model (model);
|
||||
gtk_widget_set_parent (priv->popover, GTK_WIDGET (swatch));
|
||||
g_object_unref (model);
|
||||
|
||||
gtk_popover_popup (GTK_POPOVER (priv->popover));
|
||||
|
@ -305,7 +305,8 @@ show_variations (GtkEmojiChooser *chooser,
|
||||
return;
|
||||
|
||||
parent_popover = gtk_widget_get_ancestor (child, GTK_TYPE_POPOVER);
|
||||
popover = gtk_popover_new (child);
|
||||
popover = gtk_popover_new ();
|
||||
gtk_widget_set_parent (popover, child);
|
||||
view = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
|
||||
gtk_widget_add_css_class (view, "view");
|
||||
box = gtk_flow_box_new ();
|
||||
|
@ -653,9 +653,8 @@ gtk_emoji_completion_new (GtkText *text)
|
||||
{
|
||||
GtkEmojiCompletion *completion;
|
||||
|
||||
completion = GTK_EMOJI_COMPLETION (g_object_new (GTK_TYPE_EMOJI_COMPLETION,
|
||||
"relative-to", text,
|
||||
NULL));
|
||||
completion = GTK_EMOJI_COMPLETION (g_object_new (GTK_TYPE_EMOJI_COMPLETION, NULL));
|
||||
gtk_widget_set_parent (GTK_WIDGET (completion), GTK_WIDGET (text));
|
||||
|
||||
connect_signals (completion, text);
|
||||
|
||||
|
@ -582,7 +582,7 @@ gtk_entry_completion_constructed (GObject *object)
|
||||
NULL);
|
||||
|
||||
/* pack it all */
|
||||
priv->popup_window = gtk_popover_new (NULL);
|
||||
priv->popup_window = gtk_popover_new ();
|
||||
gtk_popover_set_position (GTK_POPOVER (priv->popup_window), GTK_POS_BOTTOM);
|
||||
gtk_popover_set_autohide (GTK_POPOVER (priv->popup_window), FALSE);
|
||||
gtk_popover_set_has_arrow (GTK_POPOVER (priv->popup_window), FALSE);
|
||||
@ -2438,8 +2438,7 @@ _gtk_entry_completion_disconnect (GtkEntryCompletion *completion)
|
||||
|
||||
unset_accessible_relation (completion->priv->popup_window,
|
||||
completion->priv->entry);
|
||||
gtk_popover_set_relative_to (GTK_POPOVER (completion->priv->popup_window),
|
||||
NULL);
|
||||
gtk_widget_unparent (completion->priv->popup_window);
|
||||
|
||||
completion->priv->entry = NULL;
|
||||
}
|
||||
@ -2452,8 +2451,7 @@ _gtk_entry_completion_connect (GtkEntryCompletion *completion,
|
||||
|
||||
set_accessible_relation (completion->priv->popup_window,
|
||||
completion->priv->entry);
|
||||
gtk_popover_set_relative_to (GTK_POPOVER (completion->priv->popup_window),
|
||||
completion->priv->entry);
|
||||
gtk_widget_set_parent (completion->priv->popup_window, GTK_WIDGET (entry));
|
||||
|
||||
connect_completion_signals (completion);
|
||||
}
|
||||
|
@ -2066,8 +2066,8 @@ file_list_build_popover (GtkFileChooserWidget *impl)
|
||||
g_menu_append_section (menu, NULL, G_MENU_MODEL (section));
|
||||
g_object_unref (section);
|
||||
|
||||
priv->browse_files_popover = gtk_popover_menu_new_from_model (priv->browse_files_tree_view,
|
||||
G_MENU_MODEL (menu));
|
||||
priv->browse_files_popover = gtk_popover_menu_new_from_model (G_MENU_MODEL (menu));
|
||||
gtk_widget_set_parent (priv->browse_files_popover, priv->browse_files_tree_view);
|
||||
g_object_unref (menu);
|
||||
}
|
||||
|
||||
@ -3264,9 +3264,7 @@ gtk_file_chooser_widget_dispose (GObject *object)
|
||||
|
||||
cancel_all_operations (impl);
|
||||
|
||||
if (priv->rename_file_popover)
|
||||
gtk_popover_set_relative_to (GTK_POPOVER (priv->rename_file_popover), NULL);
|
||||
|
||||
g_clear_pointer (&priv->rename_file_popover, gtk_widget_unparent);
|
||||
g_clear_pointer (&priv->browse_files_popover, gtk_widget_destroy);
|
||||
g_clear_object (&priv->extra_widget);
|
||||
g_clear_pointer (&priv->bookmarks_manager, _gtk_bookmarks_manager_free);
|
||||
@ -8007,7 +8005,6 @@ post_process_ui (GtkFileChooserWidget *impl)
|
||||
|
||||
gtk_popover_set_default_widget (GTK_POPOVER (priv->new_folder_popover), priv->new_folder_create_button);
|
||||
gtk_popover_set_default_widget (GTK_POPOVER (priv->rename_file_popover), priv->rename_file_rename_button);
|
||||
gtk_popover_set_relative_to (GTK_POPOVER (priv->rename_file_popover), priv->browse_files_tree_view);
|
||||
|
||||
priv->item_actions = G_ACTION_GROUP (g_simple_action_group_new ());
|
||||
g_action_map_add_action_entries (G_ACTION_MAP (priv->item_actions),
|
||||
|
@ -6045,7 +6045,8 @@ gtk_label_do_popup (GtkLabel *label,
|
||||
GMenuModel *model;
|
||||
|
||||
model = gtk_label_get_menu_model (label);
|
||||
priv->popup_menu = gtk_popover_menu_new_from_model (GTK_WIDGET (label), model);
|
||||
priv->popup_menu = gtk_popover_menu_new_from_model (model);
|
||||
gtk_widget_set_parent (priv->popup_menu, GTK_WIDGET (label));
|
||||
gtk_popover_set_position (GTK_POPOVER (priv->popup_menu), GTK_POS_BOTTOM);
|
||||
|
||||
gtk_popover_set_has_arrow (GTK_POPOVER (priv->popup_menu), FALSE);
|
||||
|
@ -421,7 +421,8 @@ gtk_link_button_do_popup (GtkLinkButton *link_button,
|
||||
GMenuModel *model;
|
||||
|
||||
model = gtk_link_button_get_menu_model ();
|
||||
priv->popup_menu = gtk_popover_menu_new_from_model (GTK_WIDGET (link_button), model);
|
||||
priv->popup_menu = gtk_popover_menu_new_from_model (model);
|
||||
gtk_widget_set_parent (priv->popup_menu, GTK_WIDGET (link_button));
|
||||
gtk_popover_set_position (GTK_POPOVER (priv->popup_menu), GTK_POS_BOTTOM);
|
||||
|
||||
gtk_popover_set_has_arrow (GTK_POPOVER (priv->popup_menu), FALSE);
|
||||
|
@ -301,6 +301,7 @@ gtk_menu_button_measure (GtkWidget *widget,
|
||||
for_size,
|
||||
minimum, natural,
|
||||
minimum_baseline, natural_baseline);
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
@ -315,7 +316,6 @@ gtk_menu_button_size_allocate (GtkWidget *widget,
|
||||
gtk_widget_size_allocate (priv->button,
|
||||
&(GtkAllocation) { 0, 0, width, height },
|
||||
baseline);
|
||||
|
||||
if (priv->popover)
|
||||
gtk_native_check_resize (GTK_NATIVE (priv->popover));
|
||||
}
|
||||
@ -552,7 +552,7 @@ gtk_menu_button_set_menu_model (GtkMenuButton *menu_button,
|
||||
{
|
||||
GtkWidget *popover;
|
||||
|
||||
popover = gtk_popover_menu_new_from_model (GTK_WIDGET (menu_button), menu_model);
|
||||
popover = gtk_popover_menu_new_from_model (menu_model);
|
||||
gtk_menu_button_set_popover (menu_button, popover);
|
||||
}
|
||||
else
|
||||
@ -752,7 +752,7 @@ gtk_menu_button_dispose (GObject *object)
|
||||
g_signal_handlers_disconnect_by_func (priv->popover,
|
||||
popover_destroy_cb,
|
||||
object);
|
||||
gtk_popover_set_relative_to (GTK_POPOVER (priv->popover), NULL);
|
||||
gtk_widget_unparent (priv->popover);
|
||||
priv->popover = NULL;
|
||||
}
|
||||
|
||||
@ -803,14 +803,14 @@ gtk_menu_button_set_popover (GtkMenuButton *menu_button,
|
||||
popover_destroy_cb,
|
||||
menu_button);
|
||||
|
||||
gtk_popover_set_relative_to (GTK_POPOVER (priv->popover), NULL);
|
||||
gtk_widget_unparent (priv->popover);
|
||||
}
|
||||
|
||||
priv->popover = popover;
|
||||
|
||||
if (popover)
|
||||
{
|
||||
gtk_popover_set_relative_to (GTK_POPOVER (priv->popover), GTK_WIDGET (menu_button));
|
||||
gtk_widget_set_parent (priv->popover, GTK_WIDGET (menu_button));
|
||||
g_signal_connect_swapped (priv->popover, "closed",
|
||||
G_CALLBACK (menu_deactivate_cb), menu_button);
|
||||
g_signal_connect_swapped (priv->popover, "destroy",
|
||||
|
@ -303,7 +303,7 @@ gtk_menu_section_box_insert_func (GtkMenuTrackerItem *item,
|
||||
|
||||
model = _gtk_menu_tracker_item_get_link (item, G_MENU_LINK_SUBMENU);
|
||||
|
||||
submenu = gtk_popover_menu_new_from_model_full (NULL, model, box->flags);
|
||||
submenu = gtk_popover_menu_new_from_model_full (model, box->flags);
|
||||
gtk_popover_set_has_arrow (GTK_POPOVER (submenu), FALSE);
|
||||
gtk_widget_set_valign (submenu, GTK_ALIGN_START);
|
||||
|
||||
|
@ -699,13 +699,13 @@ gtk_model_button_set_popover (GtkModelButton *button,
|
||||
GtkWidget *popover)
|
||||
{
|
||||
if (button->popover)
|
||||
gtk_popover_set_relative_to (GTK_POPOVER (button->popover), NULL);
|
||||
gtk_widget_unparent (button->popover);
|
||||
|
||||
button->popover = popover;
|
||||
|
||||
if (button->popover)
|
||||
{
|
||||
gtk_popover_set_relative_to (GTK_POPOVER (button->popover), GTK_WIDGET (button));
|
||||
gtk_widget_set_parent (button->popover, GTK_WIDGET (button));
|
||||
gtk_popover_set_position (GTK_POPOVER (button->popover), GTK_POS_RIGHT);
|
||||
}
|
||||
|
||||
|
@ -1413,7 +1413,8 @@ do_popup_menu_for_process_tree_view (GtkWidget *widget,
|
||||
GtkWidget *item;
|
||||
double x, y;
|
||||
|
||||
menu = gtk_popover_new (widget);
|
||||
menu = gtk_popover_new ();
|
||||
gtk_widget_set_parent (menu, widget);
|
||||
gtk_style_context_add_class (gtk_widget_get_style_context (menu),
|
||||
GTK_STYLE_CLASS_CONTEXT_MENU);
|
||||
|
||||
|
@ -6531,7 +6531,8 @@ gtk_notebook_popup_enable (GtkNotebook *notebook)
|
||||
if (priv->menu)
|
||||
return;
|
||||
|
||||
priv->menu = gtk_popover_menu_new (priv->tabs_widget);
|
||||
priv->menu = gtk_popover_menu_new ();
|
||||
gtk_widget_set_parent (priv->menu, priv->tabs_widget);
|
||||
|
||||
priv->menu_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
|
||||
gtk_popover_menu_add_submenu (GTK_POPOVER_MENU (priv->menu), priv->menu_box, "main");
|
||||
|
@ -2558,7 +2558,8 @@ create_rename_popover (GtkPlacesSidebar *sidebar)
|
||||
if (sidebar->rename_popover)
|
||||
return;
|
||||
|
||||
popover = gtk_popover_new (GTK_WIDGET (sidebar));
|
||||
popover = gtk_popover_new ();
|
||||
gtk_widget_set_parent (popover, GTK_WIDGET (sidebar));
|
||||
/* Clean sidebar pointer when its destroyed, most of the times due to its
|
||||
* relative_to associated row being destroyed */
|
||||
g_signal_connect (popover, "destroy", G_CALLBACK (on_rename_popover_destroy), sidebar);
|
||||
@ -2625,13 +2626,13 @@ update_popover_shadowing (GtkWidget *row,
|
||||
static void
|
||||
set_prelight (GtkPopover *popover)
|
||||
{
|
||||
update_popover_shadowing (gtk_popover_get_relative_to (popover), TRUE);
|
||||
update_popover_shadowing (gtk_widget_get_parent (GTK_WIDGET (popover)), TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
unset_prelight (GtkPopover *popover)
|
||||
{
|
||||
update_popover_shadowing (gtk_popover_get_relative_to (popover), FALSE);
|
||||
update_popover_shadowing (gtk_widget_get_parent (GTK_WIDGET (popover)), FALSE);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -2661,7 +2662,7 @@ show_rename_popover (GtkSidebarRow *row)
|
||||
sidebar->rename_uri = g_strdup (uri);
|
||||
|
||||
gtk_editable_set_text (GTK_EDITABLE (sidebar->rename_entry), name);
|
||||
gtk_popover_set_relative_to (GTK_POPOVER (sidebar->rename_popover), GTK_WIDGET (row));
|
||||
gtk_widget_set_parent (sidebar->rename_popover, GTK_WIDGET (row));
|
||||
setup_popover_shadowing (sidebar->rename_popover);
|
||||
|
||||
gtk_popover_popup (GTK_POPOVER (sidebar->rename_popover));
|
||||
@ -3513,7 +3514,8 @@ create_row_popover (GtkPlacesSidebar *sidebar,
|
||||
}
|
||||
#endif
|
||||
|
||||
sidebar->popover = gtk_popover_new (GTK_WIDGET (sidebar));
|
||||
sidebar->popover = gtk_popover_new ();
|
||||
gtk_widget_set_parent (sidebar->popover, GTK_WIDGET (sidebar));
|
||||
/* Clean sidebar pointer when its destroyed, most of the times due to its
|
||||
* relative_to associated row being destroyed */
|
||||
g_signal_connect (sidebar->popover, "destroy", G_CALLBACK (on_row_popover_destroy), sidebar);
|
||||
@ -3561,7 +3563,7 @@ show_row_popover (GtkSidebarRow *row)
|
||||
|
||||
create_row_popover (sidebar, row);
|
||||
|
||||
gtk_popover_set_relative_to (GTK_POPOVER (sidebar->popover), GTK_WIDGET (row));
|
||||
gtk_widget_set_parent (sidebar->popover, GTK_WIDGET (row));
|
||||
|
||||
sidebar->context_row = row;
|
||||
gtk_popover_popup (GTK_POPOVER (sidebar->popover));
|
||||
|
@ -1729,7 +1729,8 @@ popup_menu (GtkPlacesViewRow *row,
|
||||
{
|
||||
GMenuModel *model = get_menu_model ();
|
||||
|
||||
priv->popup_menu = gtk_popover_menu_new_from_model (GTK_WIDGET (view), model);
|
||||
priv->popup_menu = gtk_popover_menu_new_from_model (model);
|
||||
gtk_widget_set_parent (priv->popup_menu, GTK_WIDGET (view));
|
||||
gtk_popover_set_position (GTK_POPOVER (priv->popup_menu), GTK_POS_BOTTOM);
|
||||
|
||||
gtk_popover_set_has_arrow (GTK_POPOVER (priv->popup_menu), FALSE);
|
||||
@ -1739,7 +1740,7 @@ popup_menu (GtkPlacesViewRow *row,
|
||||
}
|
||||
|
||||
gtk_widget_set_halign (priv->popup_menu, GTK_ALIGN_CENTER);
|
||||
gtk_popover_set_relative_to (GTK_POPOVER (priv->popup_menu), GTK_WIDGET (row));
|
||||
gtk_widget_set_parent (priv->popup_menu, GTK_WIDGET (row));
|
||||
|
||||
priv->row_for_action = row;
|
||||
gtk_popover_popup (GTK_POPOVER (priv->popup_menu));
|
||||
|
145
gtk/gtkpopover.c
145
gtk/gtkpopover.c
@ -25,8 +25,7 @@
|
||||
*
|
||||
* GtkPopover is a bubble-like context window, primarily meant to
|
||||
* provide context-dependent information or options. Popovers are
|
||||
* attached to a widget, passed at construction time on gtk_popover_new(),
|
||||
* or updated afterwards through gtk_popover_set_relative_to(), by
|
||||
* attached to a widget, set with gtk_widget_set_parent(). By
|
||||
* default they will point to the whole widget area, although this
|
||||
* behavior can be changed through gtk_popover_set_pointing_to().
|
||||
*
|
||||
@ -143,7 +142,6 @@ typedef struct {
|
||||
GtkWidget *default_widget;
|
||||
|
||||
GdkSurfaceState state;
|
||||
GtkWidget *relative_to;
|
||||
GdkRectangle pointing_to;
|
||||
gboolean has_pointing_to;
|
||||
guint surface_transform_changed_cb;
|
||||
@ -169,8 +167,7 @@ enum {
|
||||
static guint signals[LAST_SIGNAL] = { 0 };
|
||||
|
||||
enum {
|
||||
PROP_RELATIVE_TO = 1,
|
||||
PROP_POINTING_TO,
|
||||
PROP_POINTING_TO = 1,
|
||||
PROP_POSITION,
|
||||
PROP_AUTOHIDE,
|
||||
PROP_DEFAULT_WIDGET,
|
||||
@ -416,8 +413,10 @@ create_popup_layout (GtkPopover *popover)
|
||||
GdkGravity surface_anchor;
|
||||
GdkAnchorHints anchor_hints;
|
||||
GdkPopupLayout *layout;
|
||||
GtkWidget *parent;
|
||||
|
||||
gtk_widget_get_surface_allocation (priv->relative_to, &rect);
|
||||
parent = gtk_widget_get_parent (GTK_WIDGET (popover));
|
||||
gtk_widget_get_surface_allocation (parent, &rect);
|
||||
if (priv->has_pointing_to)
|
||||
{
|
||||
rect.x += priv->pointing_to.x;
|
||||
@ -653,7 +652,7 @@ gtk_popover_activate_default (GtkPopover *popover)
|
||||
GtkPopoverPrivate *priv = gtk_popover_get_instance_private (popover);
|
||||
GtkWidget *focus_widget;
|
||||
|
||||
focus_widget = gtk_window_get_focus (GTK_WINDOW (gtk_widget_get_root (priv->relative_to)));
|
||||
focus_widget = gtk_window_get_focus (GTK_WINDOW (gtk_widget_get_root (GTK_WIDGET (popover))));
|
||||
if (!gtk_widget_is_ancestor (focus_widget, GTK_WIDGET (popover)))
|
||||
focus_widget = NULL;
|
||||
|
||||
@ -744,10 +743,12 @@ gtk_popover_realize (GtkWidget *widget)
|
||||
{
|
||||
GtkPopover *popover = GTK_POPOVER (widget);
|
||||
GtkPopoverPrivate *priv = gtk_popover_get_instance_private (popover);
|
||||
GdkSurface *parent;
|
||||
GdkSurface *parent_surface;
|
||||
GtkWidget *parent;
|
||||
|
||||
parent = gtk_native_get_surface (gtk_widget_get_native (priv->relative_to));
|
||||
priv->surface = gdk_surface_new_popup (parent, priv->autohide);
|
||||
parent = gtk_widget_get_parent (widget);
|
||||
parent_surface = gtk_native_get_surface (gtk_widget_get_native (parent));
|
||||
priv->surface = gdk_surface_new_popup (parent_surface, priv->autohide);
|
||||
|
||||
gdk_surface_set_widget (priv->surface, widget);
|
||||
|
||||
@ -838,11 +839,13 @@ gtk_popover_map (GtkWidget *widget)
|
||||
GtkPopover *popover = GTK_POPOVER (widget);
|
||||
GtkPopoverPrivate *priv = gtk_popover_get_instance_private (popover);
|
||||
GtkWidget *child;
|
||||
GtkWidget *parent;
|
||||
|
||||
present_popup (popover);
|
||||
|
||||
parent = gtk_widget_get_parent (widget);
|
||||
priv->surface_transform_changed_cb =
|
||||
gtk_widget_add_surface_transform_changed_callback (priv->relative_to,
|
||||
gtk_widget_add_surface_transform_changed_callback (parent,
|
||||
surface_transform_changed_cb,
|
||||
popover,
|
||||
unset_surface_transform_changed_cb);
|
||||
@ -860,8 +863,10 @@ gtk_popover_unmap (GtkWidget *widget)
|
||||
GtkPopover *popover = GTK_POPOVER (widget);
|
||||
GtkPopoverPrivate *priv = gtk_popover_get_instance_private (popover);
|
||||
GtkWidget *child;
|
||||
GtkWidget *parent;
|
||||
|
||||
gtk_widget_remove_surface_transform_changed_callback (priv->relative_to,
|
||||
parent = gtk_widget_get_parent (widget);
|
||||
gtk_widget_remove_surface_transform_changed_callback (parent,
|
||||
priv->surface_transform_changed_cb);
|
||||
priv->surface_transform_changed_cb = 0;
|
||||
|
||||
@ -926,11 +931,13 @@ gtk_popover_get_gap_coords (GtkPopover *popover,
|
||||
int border_radius;
|
||||
int popover_width, popover_height;
|
||||
GtkCssStyle *style;
|
||||
GtkWidget *parent;
|
||||
|
||||
popover_width = gtk_widget_get_allocated_width (widget);
|
||||
popover_height = gtk_widget_get_allocated_height (widget);
|
||||
parent = gtk_widget_get_parent (widget);
|
||||
|
||||
gtk_widget_get_surface_allocation (priv->relative_to, &rect);
|
||||
gtk_widget_get_surface_allocation (parent, &rect);
|
||||
if (priv->has_pointing_to)
|
||||
{
|
||||
rect.x += priv->pointing_to.x;
|
||||
@ -1097,8 +1104,11 @@ gtk_popover_apply_tail_path (GtkPopover *popover,
|
||||
gint tip_x, tip_y;
|
||||
gint final_x, final_y;
|
||||
GtkBorder border;
|
||||
GtkWidget *parent;
|
||||
|
||||
if (!priv->relative_to)
|
||||
parent = gtk_widget_get_parent (GTK_WIDGET (popover));
|
||||
|
||||
if (!parent)
|
||||
return;
|
||||
|
||||
get_border (priv->arrow_node, &border);
|
||||
@ -1364,10 +1374,6 @@ gtk_popover_set_property (GObject *object,
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_RELATIVE_TO:
|
||||
gtk_popover_set_relative_to (popover, g_value_get_object (value));
|
||||
break;
|
||||
|
||||
case PROP_POINTING_TO:
|
||||
gtk_popover_set_pointing_to (popover, g_value_get_boxed (value));
|
||||
break;
|
||||
@ -1405,10 +1411,6 @@ gtk_popover_get_property (GObject *object,
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_RELATIVE_TO:
|
||||
g_value_set_object (value, priv->relative_to);
|
||||
break;
|
||||
|
||||
case PROP_POINTING_TO:
|
||||
g_value_set_boxed (value, &priv->pointing_to);
|
||||
break;
|
||||
@ -1483,13 +1485,6 @@ gtk_popover_class_init (GtkPopoverClass *klass)
|
||||
|
||||
klass->activate_default = gtk_popover_activate_default;
|
||||
|
||||
properties[PROP_RELATIVE_TO] =
|
||||
g_param_spec_object ("relative-to",
|
||||
P_("Relative to"),
|
||||
P_("Widget the bubble window points to"),
|
||||
GTK_TYPE_WIDGET,
|
||||
GTK_PARAM_READWRITE);
|
||||
|
||||
properties[PROP_POINTING_TO] =
|
||||
g_param_spec_boxed ("pointing-to",
|
||||
P_("Pointing to"),
|
||||
@ -1551,24 +1546,9 @@ gtk_popover_class_init (GtkPopoverClass *klass)
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
gtk_popover_new (GtkWidget *relative_to)
|
||||
gtk_popover_new (void)
|
||||
{
|
||||
return GTK_WIDGET (g_object_new (GTK_TYPE_POPOVER,
|
||||
"relative-to", relative_to,
|
||||
NULL));
|
||||
}
|
||||
|
||||
static void
|
||||
relative_to_size_changed (GtkWidget *widget,
|
||||
int width,
|
||||
int height,
|
||||
int baseline,
|
||||
GtkPopover *popover)
|
||||
{
|
||||
GtkPopoverPrivate *priv = gtk_popover_get_instance_private (popover);
|
||||
|
||||
if (priv->surface && gdk_surface_get_mapped (priv->surface))
|
||||
present_popup (popover);
|
||||
return g_object_new (GTK_TYPE_POPOVER, NULL);
|
||||
}
|
||||
|
||||
void
|
||||
@ -1610,79 +1590,13 @@ gtk_popover_native_interface_init (GtkNativeInterface *iface)
|
||||
iface->check_resize = gtk_popover_native_check_resize;
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_popover_set_relative_to:
|
||||
* @popover: a #GtkPopover
|
||||
* @relative_to: (allow-none): a #GtkWidget
|
||||
*
|
||||
* Sets a new widget to be attached to @popover. If @popover is
|
||||
* visible, the position will be updated.
|
||||
*
|
||||
* Note: the ownership of popovers is always given to their @relative_to
|
||||
* widget, so if @relative_to is set to %NULL on an attached @popover, it
|
||||
* will be detached from its previous widget, and consequently destroyed
|
||||
* unless extra references are kept.
|
||||
**/
|
||||
void
|
||||
gtk_popover_set_relative_to (GtkPopover *popover,
|
||||
GtkWidget *relative_to)
|
||||
{
|
||||
GtkPopoverPrivate *priv = gtk_popover_get_instance_private (popover);
|
||||
|
||||
g_return_if_fail (GTK_IS_POPOVER (popover));
|
||||
|
||||
g_object_ref (popover);
|
||||
|
||||
if (priv->relative_to)
|
||||
{
|
||||
g_signal_handlers_disconnect_by_func (priv->relative_to,
|
||||
relative_to_size_changed,
|
||||
popover);
|
||||
gtk_widget_unparent (GTK_WIDGET (popover));
|
||||
}
|
||||
|
||||
priv->relative_to = relative_to;
|
||||
|
||||
if (priv->relative_to)
|
||||
{
|
||||
g_signal_connect_object (priv->relative_to, "size-allocate",
|
||||
G_CALLBACK (relative_to_size_changed), popover, 0);
|
||||
gtk_css_node_set_parent (gtk_widget_get_css_node (GTK_WIDGET (popover)),
|
||||
gtk_widget_get_css_node (relative_to));
|
||||
gtk_widget_set_parent (GTK_WIDGET (popover), relative_to);
|
||||
}
|
||||
|
||||
g_object_notify_by_pspec (G_OBJECT (popover), properties[PROP_RELATIVE_TO]);
|
||||
|
||||
g_object_unref (popover);
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_popover_get_relative_to:
|
||||
* @popover: a #GtkPopover
|
||||
*
|
||||
* Returns the widget @popover is currently attached to
|
||||
*
|
||||
* Returns: (transfer none): a #GtkWidget
|
||||
**/
|
||||
GtkWidget *
|
||||
gtk_popover_get_relative_to (GtkPopover *popover)
|
||||
{
|
||||
GtkPopoverPrivate *priv = gtk_popover_get_instance_private (popover);
|
||||
|
||||
g_return_val_if_fail (GTK_IS_POPOVER (popover), NULL);
|
||||
|
||||
return priv->relative_to;
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_popover_set_pointing_to:
|
||||
* @popover: a #GtkPopover
|
||||
* @rect: rectangle to point to
|
||||
*
|
||||
* Sets the rectangle that @popover will point to, in the
|
||||
* coordinate space of the widget @popover is attached to,
|
||||
* see gtk_popover_set_relative_to().
|
||||
* coordinate space of the @popover parent.
|
||||
**/
|
||||
void
|
||||
gtk_popover_set_pointing_to (GtkPopover *popover,
|
||||
@ -1726,11 +1640,12 @@ gtk_popover_get_pointing_to (GtkPopover *popover,
|
||||
|
||||
if (priv->has_pointing_to)
|
||||
*rect = priv->pointing_to;
|
||||
else if (priv->relative_to)
|
||||
else
|
||||
{
|
||||
graphene_rect_t r;
|
||||
GtkWidget *parent = gtk_widget_get_parent (GTK_WIDGET (popover));
|
||||
|
||||
if (!gtk_widget_compute_bounds (priv->relative_to, priv->relative_to, &r))
|
||||
if (!gtk_widget_compute_bounds (parent, parent, &r))
|
||||
return FALSE;
|
||||
|
||||
rect->x = floorf (r.origin.x);
|
||||
|
@ -60,13 +60,7 @@ GDK_AVAILABLE_IN_ALL
|
||||
GType gtk_popover_get_type (void) G_GNUC_CONST;
|
||||
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
GtkWidget * gtk_popover_new (GtkWidget *relative_to);
|
||||
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
void gtk_popover_set_relative_to (GtkPopover *popover,
|
||||
GtkWidget *relative_to);
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
GtkWidget * gtk_popover_get_relative_to (GtkPopover *popover);
|
||||
GtkWidget * gtk_popover_new (void);
|
||||
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
void gtk_popover_set_pointing_to (GtkPopover *popover,
|
||||
|
@ -461,21 +461,17 @@ gtk_popover_menu_class_init (GtkPopoverMenuClass *klass)
|
||||
|
||||
/**
|
||||
* gtk_popover_menu_new:
|
||||
* @relative_to: (allow-none): #GtkWidget the popover is related to
|
||||
*
|
||||
* Creates a new popover menu.
|
||||
*
|
||||
* Returns: a new #GtkPopoverMenu
|
||||
*/
|
||||
GtkWidget *
|
||||
gtk_popover_menu_new (GtkWidget *relative_to)
|
||||
gtk_popover_menu_new (void)
|
||||
{
|
||||
GtkWidget *popover;
|
||||
|
||||
g_return_val_if_fail (relative_to == NULL || GTK_IS_WIDGET (relative_to), NULL);
|
||||
|
||||
popover = g_object_new (GTK_TYPE_POPOVER_MENU,
|
||||
"relative-to", relative_to,
|
||||
"autohide", TRUE,
|
||||
NULL);
|
||||
|
||||
@ -522,11 +518,10 @@ gtk_popover_menu_add_submenu (GtkPopoverMenu *popover,
|
||||
|
||||
/**
|
||||
* gtk_popover_menu_new_from_model:
|
||||
* @relative_to: (allow-none): #GtkWidget the popover is related to
|
||||
* @model: (allow-none): a #GMenuModel, or %NULL
|
||||
*
|
||||
* Creates a #GtkPopoverMenu and populates it according to
|
||||
* @model. The popover is pointed to the @relative_to widget.
|
||||
* @model.
|
||||
*
|
||||
* The created buttons are connected to actions found in the
|
||||
* #GtkApplicationWindow to which the popover belongs - typically
|
||||
@ -543,27 +538,25 @@ gtk_popover_menu_add_submenu (GtkPopoverMenu *popover,
|
||||
* Returns: the new #GtkPopoverMenu
|
||||
*/
|
||||
GtkWidget *
|
||||
gtk_popover_menu_new_from_model (GtkWidget *relative_to,
|
||||
GMenuModel *model)
|
||||
gtk_popover_menu_new_from_model (GMenuModel *model)
|
||||
|
||||
{
|
||||
return gtk_popover_menu_new_from_model_full (relative_to, model, 0);
|
||||
return gtk_popover_menu_new_from_model_full (model, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_popover_menu_new_from_model_full:
|
||||
* @relative_to: (allow-none): #GtkWidget the popover is related to
|
||||
* @model: a #GMenuModel
|
||||
* @flags: flags that affect how the menu is created
|
||||
*
|
||||
* Creates a #GtkPopoverMenu and populates it according to
|
||||
* @model. The popover is pointed to the @relative_to widget.
|
||||
* @model.
|
||||
*
|
||||
* The created buttons are connected to actions found in the
|
||||
* action groups that are accessible from the @relative-to widget.
|
||||
* action groups that are accessible from the parent widget.
|
||||
* This includes the #GtkApplicationWindow to which the popover
|
||||
* belongs. Actions can also be added using gtk_widget_insert_action_group()
|
||||
* on the @relative-to widget or on any of its parent widgets.
|
||||
* on the parent widget or on any of its parent widgets.
|
||||
*
|
||||
* The only flag that is supported currently is
|
||||
* #GTK_POPOVER_MENU_NESTED, which makes GTK create traditional,
|
||||
@ -572,16 +565,14 @@ gtk_popover_menu_new_from_model (GtkWidget *relative_to,
|
||||
* Returns: (transfer full): the new #GtkPopoverMenu
|
||||
*/
|
||||
GtkWidget *
|
||||
gtk_popover_menu_new_from_model_full (GtkWidget *relative_to,
|
||||
GMenuModel *model,
|
||||
gtk_popover_menu_new_from_model_full (GMenuModel *model,
|
||||
GtkPopoverMenuFlags flags)
|
||||
{
|
||||
GtkWidget *popover;
|
||||
|
||||
g_return_val_if_fail (relative_to == NULL || GTK_IS_WIDGET (relative_to), NULL);
|
||||
g_return_val_if_fail (model == NULL || G_IS_MENU_MODEL (model), NULL);
|
||||
|
||||
popover = gtk_popover_menu_new (relative_to);
|
||||
popover = gtk_popover_menu_new ();
|
||||
GTK_POPOVER_MENU (popover)->flags = flags;
|
||||
gtk_popover_menu_set_menu_model (GTK_POPOVER_MENU (popover), model);
|
||||
|
||||
|
@ -36,8 +36,7 @@ GDK_AVAILABLE_IN_ALL
|
||||
GType gtk_popover_menu_get_type (void) G_GNUC_CONST;
|
||||
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
GtkWidget * gtk_popover_menu_new_from_model (GtkWidget *relative_to,
|
||||
GMenuModel *model);
|
||||
GtkWidget * gtk_popover_menu_new_from_model (GMenuModel *model);
|
||||
|
||||
/**
|
||||
* GtkPopoverMenuFlags:
|
||||
@ -53,8 +52,7 @@ typedef enum {
|
||||
} GtkPopoverMenuFlags;
|
||||
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
GtkWidget * gtk_popover_menu_new_from_model_full (GtkWidget *relative_to,
|
||||
GMenuModel *model,
|
||||
GtkWidget * gtk_popover_menu_new_from_model_full (GMenuModel *model,
|
||||
GtkPopoverMenuFlags flags);
|
||||
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
|
@ -405,7 +405,8 @@ tracker_insert (GtkMenuTrackerItem *item,
|
||||
G_BINDING_SYNC_CREATE);
|
||||
|
||||
model = _gtk_menu_tracker_item_get_link (item, G_MENU_LINK_SUBMENU);
|
||||
popover = GTK_POPOVER (gtk_popover_menu_new_from_model_full (GTK_WIDGET (widget), model, GTK_POPOVER_MENU_NESTED));
|
||||
popover = GTK_POPOVER (gtk_popover_menu_new_from_model_full (model, GTK_POPOVER_MENU_NESTED));
|
||||
gtk_widget_set_parent (GTK_WIDGET (popover), GTK_WIDGET (widget));
|
||||
gtk_popover_set_position (popover, GTK_POS_BOTTOM);
|
||||
gtk_popover_set_has_arrow (popover, FALSE);
|
||||
gtk_widget_set_halign (GTK_WIDGET (popover), GTK_ALIGN_START);
|
||||
|
@ -32,7 +32,7 @@ GtkWidget *gtk_popover_menu_get_parent_menu (GtkPopoverMenu *menu);
|
||||
void gtk_popover_menu_set_parent_menu (GtkPopoverMenu *menu,
|
||||
GtkWidget *parent);
|
||||
|
||||
GtkWidget * gtk_popover_menu_new (GtkWidget *relative_to);
|
||||
GtkWidget * gtk_popover_menu_new (void);
|
||||
|
||||
void gtk_popover_menu_add_submenu (GtkPopoverMenu *popover,
|
||||
GtkWidget *submenu,
|
||||
|
@ -376,7 +376,7 @@ gtk_scale_button_init (GtkScaleButton *button)
|
||||
priv->applied_orientation = GTK_ORIENTATION_VERTICAL;
|
||||
|
||||
gtk_widget_init_template (GTK_WIDGET (button));
|
||||
gtk_popover_set_relative_to (GTK_POPOVER (priv->dock), GTK_WIDGET (button));
|
||||
gtk_widget_set_parent (priv->dock, GTK_WIDGET (button));
|
||||
|
||||
/* Need a local reference to the adjustment */
|
||||
priv->adjustment = gtk_adjustment_new (0, 0, 100, 2, 20, 0);
|
||||
|
@ -932,7 +932,6 @@ gtk_shortcuts_window_init (GtkShortcutsWindow *self)
|
||||
gtk_stack_add_named (priv->title_stack, GTK_WIDGET (priv->menu_button), "sections");
|
||||
|
||||
priv->popover = g_object_new (GTK_TYPE_POPOVER,
|
||||
"relative-to", priv->menu_button,
|
||||
"position", GTK_POS_BOTTOM,
|
||||
NULL);
|
||||
gtk_menu_button_set_popover (priv->menu_button, GTK_WIDGET (priv->popover));
|
||||
|
@ -1898,7 +1898,8 @@ gtk_text_ensure_magnifier (GtkText *self)
|
||||
priv->magnifier = _gtk_magnifier_new (GTK_WIDGET (self));
|
||||
gtk_widget_set_size_request (priv->magnifier, 100, 60);
|
||||
_gtk_magnifier_set_magnification (GTK_MAGNIFIER (priv->magnifier), 2.0);
|
||||
priv->magnifier_popover = gtk_popover_new (GTK_WIDGET (self));
|
||||
priv->magnifier_popover = gtk_popover_new ();
|
||||
gtk_widget_set_parent (priv->magnifier_popover, GTK_WIDGET (self));
|
||||
gtk_widget_add_css_class (priv->magnifier_popover, "magnifier");
|
||||
gtk_popover_set_autohide (GTK_POPOVER (priv->magnifier_popover), FALSE);
|
||||
gtk_container_add (GTK_CONTAINER (priv->magnifier_popover),
|
||||
@ -2527,7 +2528,8 @@ gtk_text_do_popup (GtkText *self,
|
||||
GMenuModel *model;
|
||||
|
||||
model = gtk_text_get_menu_model (self);
|
||||
priv->popup_menu = gtk_popover_menu_new_from_model (GTK_WIDGET (self), model);
|
||||
priv->popup_menu = gtk_popover_menu_new_from_model (model);
|
||||
gtk_widget_set_parent (priv->popup_menu, GTK_WIDGET (self));
|
||||
gtk_popover_set_position (GTK_POPOVER (priv->popup_menu), GTK_POS_BOTTOM);
|
||||
|
||||
gtk_popover_set_has_arrow (GTK_POPOVER (priv->popup_menu), FALSE);
|
||||
@ -6026,7 +6028,8 @@ gtk_text_selection_bubble_popup_show (gpointer user_data)
|
||||
|
||||
g_clear_pointer (&priv->selection_bubble, gtk_widget_unparent);
|
||||
|
||||
priv->selection_bubble = gtk_popover_new (GTK_WIDGET (self));
|
||||
priv->selection_bubble = gtk_popover_new ();
|
||||
gtk_widget_set_parent (priv->selection_bubble, GTK_WIDGET (self));
|
||||
gtk_widget_add_css_class (priv->selection_bubble, GTK_STYLE_CLASS_TOUCH_SELECTION);
|
||||
gtk_popover_set_position (GTK_POPOVER (priv->selection_bubble), GTK_POS_BOTTOM);
|
||||
gtk_popover_set_autohide (GTK_POPOVER (priv->selection_bubble), FALSE);
|
||||
@ -6788,7 +6791,7 @@ gtk_text_insert_emoji (GtkText *self)
|
||||
chooser = gtk_emoji_chooser_new ();
|
||||
g_object_set_data (G_OBJECT (self), "gtk-emoji-chooser", chooser);
|
||||
|
||||
gtk_popover_set_relative_to (GTK_POPOVER (chooser), GTK_WIDGET (self));
|
||||
gtk_widget_set_parent (chooser, GTK_WIDGET (self));
|
||||
g_signal_connect (chooser, "emoji-picked", G_CALLBACK (emoji_picked), self);
|
||||
}
|
||||
|
||||
|
@ -1756,7 +1756,8 @@ _gtk_text_view_ensure_magnifier (GtkTextView *text_view)
|
||||
|
||||
priv->magnifier = _gtk_magnifier_new (GTK_WIDGET (text_view));
|
||||
_gtk_magnifier_set_magnification (GTK_MAGNIFIER (priv->magnifier), 2.0);
|
||||
priv->magnifier_popover = gtk_popover_new (GTK_WIDGET (text_view));
|
||||
priv->magnifier_popover = gtk_popover_new ();
|
||||
gtk_widget_set_parent (priv->magnifier_popover, GTK_WIDGET (text_view));
|
||||
gtk_widget_add_css_class (priv->magnifier_popover, "magnifier");
|
||||
gtk_popover_set_autohide (GTK_POPOVER (priv->magnifier_popover), FALSE);
|
||||
gtk_container_add (GTK_CONTAINER (priv->magnifier_popover),
|
||||
@ -8633,7 +8634,8 @@ gtk_text_view_do_popup (GtkTextView *text_view,
|
||||
GMenuModel *model;
|
||||
|
||||
model = gtk_text_view_get_menu_model (text_view);
|
||||
priv->popup_menu = gtk_popover_menu_new_from_model (GTK_WIDGET (text_view), model);
|
||||
priv->popup_menu = gtk_popover_menu_new_from_model (model);
|
||||
gtk_widget_set_parent (priv->popup_menu, GTK_WIDGET (text_view));
|
||||
gtk_popover_set_position (GTK_POPOVER (priv->popup_menu), GTK_POS_BOTTOM);
|
||||
|
||||
gtk_popover_set_has_arrow (GTK_POPOVER (priv->popup_menu), FALSE);
|
||||
@ -8847,7 +8849,8 @@ gtk_text_view_selection_bubble_popup_show (gpointer user_data)
|
||||
|
||||
g_clear_pointer (&priv->selection_bubble, gtk_widget_unparent);
|
||||
|
||||
priv->selection_bubble = gtk_popover_new (GTK_WIDGET (text_view));
|
||||
priv->selection_bubble = gtk_popover_new ();
|
||||
gtk_widget_set_parent (priv->selection_bubble, GTK_WIDGET (text_view));
|
||||
gtk_widget_add_css_class (priv->selection_bubble, GTK_STYLE_CLASS_TOUCH_SELECTION);
|
||||
gtk_popover_set_position (GTK_POPOVER (priv->selection_bubble), GTK_POS_BOTTOM);
|
||||
gtk_popover_set_autohide (GTK_POPOVER (priv->selection_bubble), FALSE);
|
||||
@ -9646,7 +9649,7 @@ gtk_text_view_insert_emoji (GtkTextView *text_view)
|
||||
chooser = gtk_emoji_chooser_new ();
|
||||
g_object_set_data (G_OBJECT (text_view), "gtk-emoji-chooser", chooser);
|
||||
|
||||
gtk_popover_set_relative_to (GTK_POPOVER (chooser), GTK_WIDGET (text_view));
|
||||
gtk_widget_set_parent (chooser, GTK_WIDGET (text_view));
|
||||
g_signal_connect_swapped (chooser, "emoji-picked",
|
||||
G_CALLBACK (gtk_text_view_insert_at_cursor), text_view);
|
||||
}
|
||||
|
@ -10053,7 +10053,8 @@ gtk_tree_view_ensure_interactive_directory (GtkTreeView *tree_view)
|
||||
if (tree_view->search_popover)
|
||||
return;
|
||||
|
||||
tree_view->search_popover = gtk_popover_new (GTK_WIDGET (tree_view));
|
||||
tree_view->search_popover = gtk_popover_new ();
|
||||
gtk_widget_set_parent (tree_view->search_popover, GTK_WIDGET (tree_view));
|
||||
gtk_popover_set_autohide (GTK_POPOVER (tree_view->search_popover), FALSE);
|
||||
|
||||
controller = gtk_event_controller_key_new ();
|
||||
|
@ -6750,7 +6750,8 @@ gtk_window_do_popup_fallback (GtkWindow *window,
|
||||
minimized = (state & GDK_SURFACE_STATE_MINIMIZED) == GDK_SURFACE_STATE_MINIMIZED;
|
||||
maximized = priv->maximized && !minimized;
|
||||
|
||||
priv->popup_menu = gtk_popover_menu_new (priv->title_box);
|
||||
priv->popup_menu = gtk_popover_menu_new ();
|
||||
gtk_widget_set_parent (priv->popup_menu, priv->title_box);
|
||||
|
||||
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
|
||||
gtk_popover_menu_add_submenu (GTK_POPOVER_MENU (priv->popup_menu), box, "main");
|
||||
|
@ -102,7 +102,8 @@ show_node_prop_editor (NodePropEditor *npe)
|
||||
GtkWidget *popover;
|
||||
GtkWidget *editor;
|
||||
|
||||
popover = gtk_popover_new (GTK_WIDGET (npe->cnt->priv->node_tree));
|
||||
popover = gtk_popover_new ();
|
||||
gtk_widget_set_parent (popover, GTK_WIDGET (npe->cnt->priv->node_tree));
|
||||
gtk_popover_set_pointing_to (GTK_POPOVER (popover), &npe->rect);
|
||||
|
||||
editor = gtk_inspector_prop_editor_new (G_OBJECT (npe->node), npe->prop_name, NULL);
|
||||
|
@ -943,7 +943,7 @@ property_editor (GObject *object,
|
||||
GFlagsClass *fclass;
|
||||
gint j;
|
||||
|
||||
popover = gtk_popover_new (NULL);
|
||||
popover = gtk_popover_new ();
|
||||
prop_edit = gtk_menu_button_new ();
|
||||
gtk_menu_button_set_popover (GTK_MENU_BUTTON (prop_edit), popover);
|
||||
|
||||
@ -1010,7 +1010,7 @@ property_editor (GObject *object,
|
||||
GtkWidget *sw;
|
||||
GListModel *model;
|
||||
|
||||
popover = gtk_popover_new (NULL);
|
||||
popover = gtk_popover_new ();
|
||||
prop_edit = gtk_menu_button_new ();
|
||||
gtk_menu_button_set_popover (GTK_MENU_BUTTON (prop_edit), popover);
|
||||
|
||||
|
@ -1163,7 +1163,8 @@ node_property_activated (GtkTreeView *tv,
|
||||
if (texture == NULL || visible)
|
||||
return;
|
||||
|
||||
popover = gtk_popover_new (GTK_WIDGET (tv));
|
||||
popover = gtk_popover_new ();
|
||||
gtk_widget_set_parent (popover, GTK_WIDGET (tv));
|
||||
gtk_popover_set_pointing_to (GTK_POPOVER (popover), &rect);
|
||||
|
||||
image = gtk_image_new_from_paintable (GDK_PAINTABLE (texture));
|
||||
|
@ -22,11 +22,9 @@
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</template>
|
||||
<object class="GtkCellAreaBox" id="area"/>
|
||||
<child>
|
||||
<object class="GtkTreePopover" id="popup_widget">
|
||||
<property name="cell-area">area</property>
|
||||
<property name="relative-to">GtkComboBox</property>
|
||||
<property name="cell-area"><object class="GtkCellAreaBox" id="area"/></property>
|
||||
<property name="has-arrow">0</property>
|
||||
<signal name="menu-activate" handler="gtk_combo_box_menu_activate" swapped="no"/>
|
||||
<signal name="show" handler="gtk_combo_box_menu_show" swapped="no"/>
|
||||
@ -38,4 +36,6 @@
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</template>
|
||||
</interface>
|
||||
|
@ -14,7 +14,6 @@
|
||||
<property name="popup-completion">0</property>
|
||||
</object>
|
||||
<object class="GtkPopover" id="server_adresses_popover">
|
||||
<property name="relative-to">address_entry</property>
|
||||
<property name="position">top</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
|
@ -194,7 +194,7 @@ main (int argc, char *argv[])
|
||||
|
||||
button = gtk_menu_button_new ();
|
||||
gtk_menu_button_set_direction (GTK_MENU_BUTTON (button), GTK_ARROW_UP);
|
||||
popover = gtk_popover_new (NULL);
|
||||
popover = gtk_popover_new ();
|
||||
label = gtk_label_new ("Popovers work too!");
|
||||
gtk_container_add (GTK_CONTAINER (popover), label);
|
||||
|
||||
|
@ -141,7 +141,7 @@ static void
|
||||
do_copy (GtkWidget *button)
|
||||
{
|
||||
GtkWidget *popover = gtk_widget_get_ancestor (button, GTK_TYPE_POPOVER);
|
||||
GtkWidget *image = gtk_popover_get_relative_to (GTK_POPOVER (popover));
|
||||
GtkWidget *image = gtk_widget_get_parent (popover);
|
||||
GdkDrop *drop = GDK_DROP (g_object_get_data (G_OBJECT (image), "drop"));
|
||||
|
||||
gtk_popover_popdown (GTK_POPOVER (popover));
|
||||
@ -152,7 +152,7 @@ static void
|
||||
do_cancel (GtkWidget *button)
|
||||
{
|
||||
GtkWidget *popover = gtk_widget_get_ancestor (button, GTK_TYPE_POPOVER);
|
||||
GtkWidget *image = gtk_popover_get_relative_to (GTK_POPOVER (popover));
|
||||
GtkWidget *image = gtk_widget_get_parent (popover);
|
||||
GdkDrop *drop = GDK_DROP (g_object_get_data (G_OBJECT (image), "drop"));
|
||||
|
||||
gtk_popover_popdown (GTK_POPOVER (popover));
|
||||
@ -170,7 +170,8 @@ ask_actions (GdkDrop *drop,
|
||||
popover = g_object_get_data (G_OBJECT (image), "popover");
|
||||
if (!popover)
|
||||
{
|
||||
popover = gtk_popover_new (image);
|
||||
popover = gtk_popover_new ();
|
||||
gtk_widget_set_parent (popover, image);
|
||||
g_object_set_data (G_OBJECT (image), "popover", popover);
|
||||
|
||||
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
|
||||
|
@ -125,7 +125,7 @@ int main (int argc, char **argv)
|
||||
GtkBuilder *builder = gtk_builder_new_from_string (menu_data, -1);
|
||||
menu_model = G_MENU_MODEL (gtk_builder_get_object (builder, "menu_model"));
|
||||
|
||||
menu = gtk_popover_menu_new_from_model (NULL, menu_model);
|
||||
menu = gtk_popover_menu_new_from_model (menu_model);
|
||||
|
||||
}
|
||||
gtk_menu_button_set_popover (GTK_MENU_BUTTON (menubutton), menu);
|
||||
|
@ -340,7 +340,8 @@ do_popup_menu (GtkWidget *icon_list,
|
||||
if (!path)
|
||||
return;
|
||||
|
||||
menu = gtk_popover_new (icon_list);
|
||||
menu = gtk_popover_new ();
|
||||
gtk_widget_set_parent (menu, icon_list);
|
||||
|
||||
data = g_new0 (ItemData, 1);
|
||||
data->icon_list = icon_view;
|
||||
|
@ -115,7 +115,7 @@ main (int argc, char *argv[])
|
||||
gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (button), model);
|
||||
popover = GTK_WIDGET (gtk_menu_button_get_popover (GTK_MENU_BUTTON (button)));
|
||||
|
||||
popover1 = gtk_popover_menu_new_from_model_full (NULL, model, GTK_POPOVER_MENU_NESTED);
|
||||
popover1 = gtk_popover_menu_new_from_model_full (model, GTK_POPOVER_MENU_NESTED);
|
||||
gtk_menu_button_set_popover (GTK_MENU_BUTTON (button1), popover1);
|
||||
|
||||
g_object_unref (builder);
|
||||
|
@ -213,7 +213,7 @@ scrollable_policy (void)
|
||||
gtk_widget_show (window);
|
||||
|
||||
/* Popover */
|
||||
popover = gtk_popover_new (NULL);
|
||||
popover = gtk_popover_new ();
|
||||
|
||||
widget = gtk_menu_button_new ();
|
||||
gtk_menu_button_set_popover (GTK_MENU_BUTTON (widget), popover);
|
||||
|
@ -420,7 +420,7 @@ main (int argc, char *argv[])
|
||||
gtk_widget_set_halign (button, GTK_ALIGN_CENTER);
|
||||
gtk_menu_button_set_label (GTK_MENU_BUTTON (button), "Custom tooltip I");
|
||||
gtk_container_add (GTK_CONTAINER (box), button);
|
||||
popover = gtk_popover_new (NULL);
|
||||
popover = gtk_popover_new ();
|
||||
gtk_menu_button_set_popover (GTK_MENU_BUTTON (button), popover);
|
||||
box2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
|
||||
gtk_container_add (GTK_CONTAINER (popover), box2);
|
||||
|
@ -31,13 +31,13 @@ test_popover_parent (void)
|
||||
|
||||
w = gtk_entry_new ();
|
||||
|
||||
p = gtk_popover_new (NULL);
|
||||
p = gtk_popover_new ();
|
||||
a = gtk_widget_get_accessible (p);
|
||||
|
||||
g_assert (a != NULL);
|
||||
g_assert (atk_object_get_parent (a) == NULL);
|
||||
|
||||
gtk_popover_set_relative_to (GTK_POPOVER (p), w);
|
||||
gtk_widget_set_parent (p, w);
|
||||
|
||||
g_assert (atk_object_get_parent (a) != NULL);
|
||||
|
||||
|
@ -2181,7 +2181,7 @@ test_expose_object (void)
|
||||
" </object>"
|
||||
"</interface>";
|
||||
|
||||
menu = gtk_popover_new (NULL);
|
||||
menu = gtk_popover_new ();
|
||||
builder = gtk_builder_new ();
|
||||
gtk_builder_expose_object (builder, "builder", G_OBJECT (builder));
|
||||
gtk_builder_expose_object (builder, "external_menu", G_OBJECT (menu));
|
||||
|
@ -43,7 +43,7 @@ test_show_popover (void)
|
||||
|
||||
window = gtk_window_new ();
|
||||
button = gtk_menu_button_new ();
|
||||
popover = gtk_popover_new (NULL);
|
||||
popover = gtk_popover_new ();
|
||||
gtk_container_add (GTK_CONTAINER (popover), gtk_label_new ("Nu?"));
|
||||
gtk_menu_button_set_popover (GTK_MENU_BUTTON (button), popover);
|
||||
gtk_container_add (GTK_CONTAINER (window), button);
|
||||
|
Loading…
Reference in New Issue
Block a user