Inline pidgin_make_scrollable gtk4

Mon, 22 Aug 2022 21:40:04 -0500

author
Elliott Sales de Andrade <quantum.analyst@gmail.com>
date
Mon, 22 Aug 2022 21:40:04 -0500
branch
gtk4
changeset 41567
517ac516af27
parent 41566
c8a09956bac2
child 41568
8effab29be30

Inline pidgin_make_scrollable

We need to change it for GTK4, and there are few enough that it can be inlined. Eventually, that code might be a `.ui` anyway.

Testing Done:
Compile only.

Reviewed at https://reviews.imfreedom.org/r/1615/

ChangeLog.API file | annotate | diff | comparison | revisions
pidgin/gtkblist.c file | annotate | diff | comparison | revisions
pidgin/gtkrequest.c file | annotate | diff | comparison | revisions
pidgin/gtkutils.c file | annotate | diff | comparison | revisions
pidgin/gtkutils.h file | annotate | diff | comparison | revisions
pidgin/plugins/spellchk.c file | annotate | diff | comparison | revisions
--- a/ChangeLog.API	Mon Aug 22 02:29:47 2022 -0500
+++ b/ChangeLog.API	Mon Aug 22 21:40:04 2022 -0500
@@ -974,6 +974,7 @@
 		* pidgin_idle_get_ui_ops
 		* pidgin_load_accels
 		* pidgin_make_mini_dialog_with_custom_icon
+		* pidgin_make_scrollable
 		* pidgin_mini_dialog_new_with_custom_icon
 		* pidgin_mini_dialog_set_custom_icon
 		* pidgin_make_pretty_arrows
--- a/pidgin/gtkblist.c	Mon Aug 22 02:29:47 2022 -0500
+++ b/pidgin/gtkblist.c	Mon Aug 22 21:40:04 2022 -0500
@@ -3075,7 +3075,7 @@
 {
 	GSimpleActionGroup *action_group = NULL;
 	void *handle;
-	GtkWidget *sep;
+	GtkWidget *sep, *sw;
 	GtkEventController *key_controller = NULL;
 	GtkTreeSelection *selection;
 
@@ -3143,9 +3143,15 @@
 	gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(gtkblist->treeview),
 			pidgin_blist_search_equal_func, NULL, NULL);
 
-	gtk_box_pack_start(GTK_BOX(gtkblist->vbox),
-		pidgin_make_scrollable(gtkblist->treeview, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC, -1, -1),
-		TRUE, TRUE, 0);
+	sw = gtk_scrolled_window_new();
+	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
+	                               GTK_POLICY_AUTOMATIC,
+	                               GTK_POLICY_AUTOMATIC);
+	gtk_scrolled_window_set_child(GTK_SCROLLED_WINDOW(sw), gtkblist->treeview);
+
+	gtk_widget_set_vexpand(sw, TRUE);
+	gtk_widget_set_valign(sw, GTK_ALIGN_FILL);
+	gtk_box_append(GTK_BOX(gtkblist->vbox), sw);
 
 	sep = gtk_separator_new(GTK_ORIENTATION_HORIZONTAL);
 	gtk_box_pack_start(GTK_BOX(gtkblist->vbox), sep, FALSE, FALSE, 0);
--- a/pidgin/gtkrequest.c	Mon Aug 22 02:29:47 2022 -0500
+++ b/pidgin/gtkrequest.c	Mon Aug 22 21:40:04 2022 -0500
@@ -1181,7 +1181,11 @@
 							 G_CALLBACK(req_entry_field_changed_cb), field);
 	    }
 
-		widget = pidgin_make_scrollable(textview, GTK_POLICY_NEVER, GTK_POLICY_ALWAYS, -1, 75);
+		widget = gtk_scrolled_window_new();
+		gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(widget),
+		                               GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
+		gtk_widget_set_size_request(widget, -1, 75);
+		gtk_scrolled_window_set_child(GTK_SCROLLED_WINDOW(widget), textview);
 	}
 	else
 	{
@@ -1454,6 +1458,7 @@
 static GtkWidget *
 create_list_field(PurpleRequestField *field)
 {
+	GtkWidget *sw;
 	GtkWidget *treeview;
 	GtkListStore *store;
 	GtkCellRenderer *renderer;
@@ -1540,7 +1545,12 @@
 	g_signal_connect(G_OBJECT(sel), "changed",
 					 G_CALLBACK(list_field_select_changed_cb), field);
 
-	return pidgin_make_scrollable(treeview, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC, -1, -1);
+
+	sw = gtk_scrolled_window_new();
+	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
+	                               GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+	gtk_scrolled_window_set_child(GTK_SCROLLED_WINDOW(sw), treeview);
+	return sw;
 }
 
 static GdkPixbuf*
--- a/pidgin/gtkutils.c	Mon Aug 22 02:29:47 2022 -0500
+++ b/pidgin/gtkutils.c	Mon Aug 22 21:40:04 2022 -0500
@@ -1109,23 +1109,3 @@
 	return FALSE;
 #endif
 }
-
-GtkWidget *
-pidgin_make_scrollable(GtkWidget *child, GtkPolicyType hscrollbar_policy, GtkPolicyType vscrollbar_policy, int width, int height)
-{
-	GtkWidget *sw = gtk_scrolled_window_new();
-
-	if (G_LIKELY(sw)) {
-		gtk_widget_show(sw);
-		gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), hscrollbar_policy, vscrollbar_policy);
-		if (width != -1 || height != -1)
-			gtk_widget_set_size_request(sw, width, height);
-		if (child) {
-			gtk_container_add(GTK_CONTAINER(sw), child);
-		}
-		return sw;
-	}
-
-	return child;
-}
-
--- a/pidgin/gtkutils.h	Mon Aug 22 02:29:47 2022 -0500
+++ b/pidgin/gtkutils.h	Mon Aug 22 21:40:04 2022 -0500
@@ -249,20 +249,6 @@
  */
 GtkWidget *pidgin_add_widget_to_vbox(GtkBox *vbox, const char *widget_label, GtkSizeGroup *sg, GtkWidget *widget, gboolean expand, GtkWidget **p_label);
 
-/**
- * pidgin_make_scrollable:
- * @child:              The child widget
- * @hscrollbar_policy:  Horizontal scrolling policy
- * @vscrollbar_policy:  Vertical scrolling policy
- * @width:              Desired widget width, or -1 for default
- * @height:             Desired widget height, or -1 for default
- *
- * Add scrollbars to a widget
- *
- * Returns: (transfer full): A scrolled window with @child packed inside of it.
- */
-GtkWidget *pidgin_make_scrollable(GtkWidget *child, GtkPolicyType hscrollbar_policy, GtkPolicyType vscrollbar_policy, int width, int height);
-
 G_END_DECLS
 
 #endif /* _PIDGINUTILS_H_ */
--- a/pidgin/plugins/spellchk.c	Mon Aug 22 02:29:47 2022 -0500
+++ b/pidgin/plugins/spellchk.c	Mon Aug 22 21:40:04 2022 -0500
@@ -2108,6 +2108,7 @@
 get_config_frame(PurplePlugin *plugin)
 {
 	GtkWidget *ret, *vbox;
+	GtkWidget *sw;
 	GtkWidget *hbox;
 	GtkWidget *button;
 	GtkSizeGroup *sg;
@@ -2181,10 +2182,14 @@
 
 	gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)),
 		 GTK_SELECTION_MULTIPLE);
-	gtk_box_pack_start(GTK_BOX(vbox),
-		pidgin_make_scrollable(tree, GTK_POLICY_NEVER, GTK_POLICY_ALWAYS, GTK_SHADOW_IN, -1, -1),
-		TRUE, TRUE, 0);
-	gtk_widget_show(tree);
+
+	sw = gtk_scrolled_window_new();
+	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER,
+	                               GTK_POLICY_ALWAYS);
+	gtk_scrolled_window_set_child(GTK_SCROLLED_WINDOW(sw), tree);
+	gtk_widget_set_vexpand(sw, TRUE);
+	gtk_widget_set_valign(sw, GTK_ALIGN_FILL);
+	gtk_box_append(GTK_BOX(vbox), sw);
 
 	hbox = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL);
 	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);

mercurial