pidgin/pidgindebug.c

branch
gtk4
changeset 41540
cb35b9603c41
parent 41531
2b86501d13fe
child 41604
ca2d6ea565a6
--- a/pidgin/pidgindebug.c	Fri May 06 00:40:26 2022 -0500
+++ b/pidgin/pidgindebug.c	Fri May 06 00:50:43 2022 -0500
@@ -101,11 +101,14 @@
 }
 
 static gboolean
-configure_cb(GtkWidget *w, GdkEventConfigure *event, void *unused)
+save_default_size_cb(GObject *gobject, G_GNUC_UNUSED GParamSpec *pspec,
+                     G_GNUC_UNUSED gpointer data)
 {
-	if (gtk_widget_get_visible(w)) {
-		purple_prefs_set_int(PIDGIN_PREFS_ROOT "/debug/width",  event->width);
-		purple_prefs_set_int(PIDGIN_PREFS_ROOT "/debug/height", event->height);
+	if (gtk_widget_get_visible(GTK_WIDGET(gobject))) {
+		gint width, height;
+		gtk_window_get_default_size(GTK_WINDOW(gobject), &width, &height);
+		purple_prefs_set_int(PIDGIN_PREFS_ROOT "/debug/width",  width);
+		purple_prefs_set_int(PIDGIN_PREFS_ROOT "/debug/height", height);
 	}
 
 	return FALSE;
@@ -159,7 +162,7 @@
 static void
 pause_cb(GtkWidget *w, PidginDebugWindow *win)
 {
-	win->paused = gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(w));
+	win->paused = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w));
 
 	if (!win->paused) {
 		GtkTextIter start, end;
@@ -291,9 +294,10 @@
 	if (!win)
 		return;
 
-	current = gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(win->filter));
-	if (active != current)
-		gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(win->filter), active);
+	current = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(win->filter));
+	if (active != current) {
+		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(win->filter), active);
+	}
 }
 
 static void
@@ -315,8 +319,9 @@
 
 	win->invert = active;
 
-	if (gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(win->filter)))
+	if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(win->filter))) {
 		regex_toggle_filter(win, TRUE);
+	}
 }
 
 static void
@@ -328,17 +333,17 @@
 
 	win->highlight = active;
 
-	if (gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(win->filter)))
+	if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(win->filter))) {
 		regex_toggle_filter(win, TRUE);
+	}
 }
 
 static void
 regex_changed_cb(GtkWidget *w, PidginDebugWindow *win) {
 	const gchar *text;
 
-	if (gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(win->filter))) {
-		gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(win->filter),
-									 FALSE);
+	if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(win->filter))) {
+		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(win->filter), FALSE);
 	}
 
 	text = gtk_editable_get_text(GTK_EDITABLE(win->expression));
@@ -367,18 +372,21 @@
 }
 
 static void
-regex_key_release_cb(GtkWidget *w, GdkEventKey *e, PidginDebugWindow *win) {
+regex_key_released_cb(G_GNUC_UNUSED GtkEventControllerKey *controller,
+                      guint keyval, G_GNUC_UNUSED guint keycode,
+                      G_GNUC_UNUSED GdkModifierType state, gpointer data)
+{
+	PidginDebugWindow *win = data;
+
 	if (gtk_widget_is_sensitive(win->filter)) {
-		GtkToggleToolButton *tb = GTK_TOGGLE_TOOL_BUTTON(win->filter);
-		if ((e->keyval == GDK_KEY_Return || e->keyval == GDK_KEY_KP_Enter) &&
-			!gtk_toggle_tool_button_get_active(tb))
+		GtkToggleButton *tb = GTK_TOGGLE_BUTTON(win->filter);
+		if ((keyval == GDK_KEY_Return || keyval == GDK_KEY_KP_Enter) &&
+			!gtk_toggle_button_get_active(tb))
 		{
-			gtk_toggle_tool_button_set_active(tb, TRUE);
+			gtk_toggle_button_set_active(tb, TRUE);
 		}
-		if (e->keyval == GDK_KEY_Escape &&
-			gtk_toggle_tool_button_get_active(tb))
-		{
-			gtk_toggle_tool_button_set_active(tb, FALSE);
+		if (keyval == GDK_KEY_Escape && gtk_toggle_button_get_active(tb)) {
+			gtk_toggle_button_set_active(tb, FALSE);
 		}
 	}
 }
@@ -397,6 +405,8 @@
 	}
 }
 
+#if 0
+/* FIXME: may not work with GTK4's SearchEntry */
 static void
 regex_popup_cb(GtkEntry *entry, GtkEntryIconPosition icon_pos, GdkEvent *event,
 		PidginDebugWindow *win)
@@ -410,13 +420,14 @@
 	gtk_popover_set_pointing_to(GTK_POPOVER(win->popover), &rect);
 	gtk_popover_popup(GTK_POPOVER(win->popover));
 }
+#endif
 
 static void
-regex_filter_toggled_cb(GtkToggleToolButton *button, PidginDebugWindow *win)
+regex_filter_toggled_cb(GtkToggleButton *button, PidginDebugWindow *win)
 {
 	gboolean active;
 
-	active = gtk_toggle_tool_button_get_active(button);
+	active = gtk_toggle_button_get_active(button);
 
 	purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/debug/filter", active);
 
@@ -516,10 +527,12 @@
 			regex_filter_toggled_cb);
 	gtk_widget_class_bind_template_callback(widget_class,
 			regex_changed_cb);
+#if 0
 	gtk_widget_class_bind_template_callback(widget_class, regex_popup_cb);
+#endif
 	gtk_widget_class_bind_template_callback(widget_class, regex_menu_cb);
 	gtk_widget_class_bind_template_callback(widget_class,
-			regex_key_release_cb);
+			regex_key_released_cb);
 	gtk_widget_class_bind_template_callback(widget_class,
 			filter_level_changed_cb);
 }
@@ -546,8 +559,10 @@
 
 	g_signal_connect(G_OBJECT(win), "delete_event",
 	                 G_CALLBACK(debug_window_destroy), NULL);
-	g_signal_connect(G_OBJECT(win), "configure_event",
-	                 G_CALLBACK(configure_cb), NULL);
+	g_signal_connect(G_OBJECT(win), "notify::default-width",
+	                 G_CALLBACK(save_default_size_cb), NULL);
+	g_signal_connect(G_OBJECT(win), "notify::default-height",
+	                 G_CALLBACK(save_default_size_cb), NULL);
 
 	handle = pidgin_debug_get_handle();
 
@@ -559,8 +574,8 @@
 		 * toggle button sensitive.
 		 */
 		gtk_widget_set_sensitive(win->filter, FALSE);
-		gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(win->filter),
-									 purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/debug/filter"));
+		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(win->filter),
+		                             purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/debug/filter"));
 		purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/debug/filter",
 									regex_pref_filter_cb, win);
 
@@ -811,7 +826,7 @@
 pidgin_debug_window_hide(void)
 {
 	if (debug_win != NULL) {
-		gtk_widget_destroy(GTK_WIDGET(debug_win));
+		gtk_window_destroy(GTK_WINDOW(debug_win));
 		debug_window_destroy(NULL, NULL, NULL);
 	}
 }

mercurial