diff options
Diffstat (limited to 'gtk/gtkplacesview.c')
-rw-r--r-- | gtk/gtkplacesview.c | 62 |
1 files changed, 12 insertions, 50 deletions
diff --git a/gtk/gtkplacesview.c b/gtk/gtkplacesview.c index 61938f345c..b7b431a944 100644 --- a/gtk/gtkplacesview.c +++ b/gtk/gtkplacesview.c @@ -106,15 +106,7 @@ static void mount_volume (GtkPlacesView static void on_eject_button_clicked (GtkWidget *widget, GtkPlacesViewRow *row); -static gboolean on_row_popup_menu (GtkWidget *widget, - GVariant *args, - gpointer user_data); - -static void click_cb (GtkGesture *gesture, - int n_press, - double x, - double y, - gpointer user_data); +static gboolean on_row_popup_menu (GtkPlacesViewRow *row); static void populate_servers (GtkPlacesView *view); @@ -681,28 +673,12 @@ insert_row (GtkPlacesView *view, gboolean is_network) { GtkPlacesViewPrivate *priv; - GtkEventController *controller; - GtkShortcutTrigger *trigger; - GtkShortcutAction *action; - GtkShortcut *shortcut; - GtkGesture *gesture; priv = gtk_places_view_get_instance_private (view); g_object_set_data (G_OBJECT (row), "is-network", GINT_TO_POINTER (is_network)); - controller = gtk_shortcut_controller_new (); - trigger = gtk_alternative_trigger_new (gtk_keyval_trigger_new (GDK_KEY_F10, GDK_SHIFT_MASK), - gtk_keyval_trigger_new (GDK_KEY_Menu, 0)); - action = gtk_callback_action_new (on_row_popup_menu, row, NULL); - shortcut = gtk_shortcut_new (trigger, action); - gtk_shortcut_controller_add_shortcut (GTK_SHORTCUT_CONTROLLER (controller), shortcut); - gtk_widget_add_controller (GTK_WIDGET (row), controller); - - gesture = gtk_gesture_click_new (); - gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (gesture), GDK_BUTTON_SECONDARY); - g_signal_connect (gesture, "pressed", G_CALLBACK (click_cb), row); - gtk_widget_add_controller (row, GTK_EVENT_CONTROLLER (gesture)); + g_signal_connect (row, "popup-menu", G_CALLBACK (on_row_popup_menu), row); g_signal_connect (gtk_places_view_row_get_eject_button (GTK_PLACES_VIEW_ROW (row)), "clicked", @@ -1723,12 +1699,10 @@ get_menu_model (void) return G_MENU_MODEL (menu); } -static gboolean -on_row_popup_menu (GtkWidget *widget, - GVariant *args, - gpointer user_data) +static void +popup_menu (GtkPlacesViewRow *row, + GdkEventButton *event) { - GtkPlacesViewRow *row = GTK_PLACES_VIEW_ROW (widget); GtkPlacesViewPrivate *priv; GtkWidget *view; GMount *mount; @@ -1756,39 +1730,27 @@ on_row_popup_menu (GtkWidget *widget, GMenuModel *model = get_menu_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); - gtk_widget_set_halign (priv->popup_menu, GTK_ALIGN_CENTER); + gtk_widget_set_halign (priv->popup_menu, GTK_ALIGN_START); g_object_unref (model); } - if (priv->row_for_action) - g_object_set_data (G_OBJECT (priv->row_for_action), "menu", NULL); - - g_object_ref (priv->popup_menu); - gtk_widget_unparent (priv->popup_menu); + gtk_widget_set_halign (priv->popup_menu, GTK_ALIGN_CENTER); gtk_widget_set_parent (priv->popup_menu, GTK_WIDGET (row)); - g_object_unref (priv->popup_menu); priv->row_for_action = row; - if (priv->row_for_action) - g_object_set_data (G_OBJECT (priv->row_for_action), "menu", priv->popup_menu); - gtk_popover_popup (GTK_POPOVER (priv->popup_menu)); - - return TRUE; } -static void -click_cb (GtkGesture *gesture, - int n_press, - double x, - double y, - gpointer user_data) +static gboolean +on_row_popup_menu (GtkPlacesViewRow *row) { - on_row_popup_menu (GTK_WIDGET (user_data), NULL, NULL); + popup_menu (row, NULL); + return TRUE; } static gboolean |