Make the plugins dialog work under GTK4 gtk4

Thu, 25 Aug 2022 22:29:50 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Thu, 25 Aug 2022 22:29:50 -0500
branch
gtk4
changeset 41593
6928f02e807a
parent 41592
8e279e150bce
child 41594
30ad4d17661f

Make the plugins dialog work under GTK4

Testing Done:
Opened the plugins dialog and made sure it showed them plugins

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

pidgin/pidginpluginsdialog.c file | annotate | diff | comparison | revisions
pidgin/resources/Plugins/dialog.ui file | annotate | diff | comparison | revisions
--- a/pidgin/pidginpluginsdialog.c	Thu Aug 25 21:36:19 2022 -0500
+++ b/pidgin/pidginpluginsdialog.c	Thu Aug 25 22:29:50 2022 -0500
@@ -35,9 +35,25 @@
 
 struct _PidginPluginsDialog {
 	GtkDialog parent;
+
+	GtkWidget *view;
 };
 
 /******************************************************************************
+ * Callbacks
+ *****************************************************************************/
+static void
+pidgin_plugins_dialog_response_cb(GtkDialog* self, gint response_id,
+                                  G_GNUC_UNUSED gpointer data)
+{
+	switch(response_id) {
+		case GTK_RESPONSE_DELETE_EVENT:
+			gtk_window_destroy(GTK_WINDOW(self));
+			break;
+	}
+}
+
+/******************************************************************************
  * GObject Implementation
  *****************************************************************************/
 G_DEFINE_TYPE(PidginPluginsDialog, pidgin_plugins_dialog, GTK_TYPE_DIALOG);
@@ -50,11 +66,22 @@
 		widget_class,
 		"/im/pidgin/Pidgin3/Plugins/dialog.ui"
 	);
+
+	gtk_widget_class_bind_template_child(widget_class, PidginPluginsDialog,
+	                                     view);
+
+	gtk_widget_class_bind_template_callback(widget_class,
+	                                        pidgin_plugins_dialog_response_cb);
 }
 
 static void
 pidgin_plugins_dialog_init(PidginPluginsDialog *dialog) {
+	GPluginManager *manager = NULL;
+
 	gtk_widget_init_template(GTK_WIDGET(dialog));
+
+	manager = gplugin_manager_get_default();
+	gplugin_gtk_view_set_manager(GPLUGIN_GTK_VIEW(dialog->view), manager);
 }
 
 /******************************************************************************
--- a/pidgin/resources/Plugins/dialog.ui	Thu Aug 25 21:36:19 2022 -0500
+++ b/pidgin/resources/Plugins/dialog.ui	Thu Aug 25 22:29:50 2022 -0500
@@ -14,7 +14,7 @@
 GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
-along with this library; if not, see <https://www.gnu.org/licenses/>.
+along with this program; if not, see <https://www.gnu.org/licenses/>.
 -->
 <interface>
   <requires lib="gtk" version="4.0"/>
@@ -25,10 +25,17 @@
   <!-- interface-copyright Pidgin Developers <devel@pidgin.im> -->
   <template class="PidginPluginsDialog" parent="GtkDialog">
     <property name="title" translatable="1">Plugins</property>
-    <property name="type-hint">dialog</property>
-    <signal name="delete-event" handler="gtk_widget_destroy" swapped="no"/>
+    <signal name="response" handler="pidgin_plugins_dialog_response_cb" swapped="no"/>
     <child internal-child="content_area">
-      <object class="GPluginGtkView" id="view"/>
+      <object class="GtkBox">
+        <property name="orientation">vertical</property>
+        <child>
+          <object class="GPluginGtkView" id="view">
+            <property name="vexpand">1</property>
+            <property name="valign">fill</property>
+          </object>
+        </child>
+      </object>
     </child>
     <child internal-child="action_area"/>
   </template>

mercurial