pidgin/gtkroomlist.c

branch
gtk4
changeset 41599
450080e4726a
parent 41554
49216e79a56b
child 41720
bcfc2c9e5213
--- a/pidgin/gtkroomlist.c	Thu Aug 25 23:25:12 2022 -0500
+++ b/pidgin/gtkroomlist.c	Fri Aug 26 00:13:48 2022 -0500
@@ -56,7 +56,7 @@
 	GtkWidget *join_button;
 	GtkWidget *close_button;
 
-	GtkWidget *popover_menu;
+	GtkWidget *popover;
 
 	PurpleAccount *account;
 	PurpleRoomlist *roomlist;
@@ -297,6 +297,10 @@
 	case RESPONSE_JOIN:
 		pidgin_roomlist_join(dialog);
 		break;
+	case GTK_RESPONSE_CLOSE:
+	case GTK_RESPONSE_DELETE_EVENT:
+		gtk_window_destroy(GTK_WINDOW(gtk_dialog));
+		break;
 	}
 }
 
@@ -362,29 +366,28 @@
 	g_clear_object(&room);
 }
 
-static gboolean
-room_click_cb(GtkWidget *tv, GdkEvent *event, gpointer data) {
+static void
+room_click_cb(G_GNUC_UNUSED GtkGestureClick *self, gint n_press, gdouble x,
+              gdouble y, gpointer data)
+{
 	PidginRoomlistDialog *dialog = data;
-	gdouble x, y;
 
-	if (!gdk_event_triggers_context_menu((GdkEvent *)event))
-		return FALSE;
-
-	gdk_event_get_position(event, &x, &y);
+	if(n_press != 1) {
+		return;
+	}
 
-	if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), x, y, NULL, NULL, NULL, NULL))
-		return FALSE;
+	if(!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(dialog->tree), (gint)x,
+	                                  (gint)y, NULL, NULL, NULL, NULL))
+	{
+		return;
+	}
 
-	gtk_popover_set_pointing_to(GTK_POPOVER(dialog->popover_menu),
+	gtk_popover_set_pointing_to(GTK_POPOVER(dialog->popover),
 	                            &(const GdkRectangle){(int)x, (int)y, 0, 0});
 
-	gtk_popover_popup(GTK_POPOVER(dialog->popover_menu));
-
-	return FALSE;
+	gtk_popover_popup(GTK_POPOVER(dialog->popover));
 }
 
-#define SMALL_SPACE 6
-
 static gboolean
 pidgin_roomlist_query_tooltip(GtkWidget *widget, int x, int y,
                               gboolean keyboard_mode, GtkTooltip *tooltip,
@@ -492,7 +495,7 @@
 	gtk_widget_class_bind_template_child(widget_class, PidginRoomlistDialog,
 	                                     stop_button);
 	gtk_widget_class_bind_template_child(widget_class, PidginRoomlistDialog,
-	                                     popover_menu);
+	                                     popover);
 
 	gtk_widget_class_bind_template_callback(widget_class, close_request_cb);
 	gtk_widget_class_bind_template_callback(widget_class, row_activated_cb);

mercurial