Convert PidginProtocolChooser to an AdwComboRow

Thu, 15 Sep 2022 23:38:08 -0500

author
Elliott Sales de Andrade <quantum.analyst@gmail.com>
date
Thu, 15 Sep 2022 23:38:08 -0500
changeset 41691
83849603277b
parent 41690
fc7915f49b1c
child 41692
ee44db31a1e3

Convert PidginProtocolChooser to an AdwComboRow

Now that all containers for it are `AdwPreferencesGroup`, this can work properly
like this.

Testing Done:
Opened a new account and checked that the Protocol chooser did something.

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

pidgin/pidginprotocolchooser.c file | annotate | diff | comparison | revisions
pidgin/pidginprotocolchooser.h file | annotate | diff | comparison | revisions
pidgin/resources/Accounts/editor.ui file | annotate | diff | comparison | revisions
pidgin/resources/Protocols/chooser.ui file | annotate | diff | comparison | revisions
--- a/pidgin/pidginprotocolchooser.c	Thu Sep 15 23:33:56 2022 -0500
+++ b/pidgin/pidginprotocolchooser.c	Thu Sep 15 23:38:08 2022 -0500
@@ -34,9 +34,8 @@
  * Structs
  *****************************************************************************/
 struct _PidginProtocolChooser {
-	AdwBin parent;
+	AdwComboRow parent;
 
-	GtkDropDown *dropdown;
 	GtkWidget *sort;
 };
 
@@ -56,7 +55,8 @@
 /******************************************************************************
  * GObject Implementation
  *****************************************************************************/
-G_DEFINE_TYPE(PidginProtocolChooser, pidgin_protocol_chooser, ADW_TYPE_BIN)
+G_DEFINE_TYPE(PidginProtocolChooser, pidgin_protocol_chooser,
+              ADW_TYPE_COMBO_ROW)
 
 static void
 pidgin_protocol_chooser_get_property(GObject *obj, guint prop_id,
@@ -121,8 +121,6 @@
 	                                            "/im/pidgin/Pidgin3/Protocols/chooser.ui");
 
 	gtk_widget_class_bind_template_child(widget_class, PidginProtocolChooser,
-	                                     dropdown);
-	gtk_widget_class_bind_template_child(widget_class, PidginProtocolChooser,
 	                                     sort);
 
 	gtk_widget_class_bind_template_callback(widget_class, dropdown_changed_cb);
@@ -153,7 +151,7 @@
 
 	g_return_val_if_fail(PIDGIN_IS_PROTOCOL_CHOOSER(chooser), NULL);
 
-	protocol = gtk_drop_down_get_selected_item(chooser->dropdown);
+	protocol = adw_combo_row_get_selected_item(ADW_COMBO_ROW(chooser));
 
 	return protocol;
 }
@@ -167,7 +165,7 @@
 	g_return_if_fail(PIDGIN_IS_PROTOCOL_CHOOSER(chooser));
 
 	if(protocol != NULL) {
-		GListModel *model = gtk_drop_down_get_model(chooser->dropdown);
+		GListModel *model = adw_combo_row_get_model(ADW_COMBO_ROW(chooser));
 		guint count = g_list_model_get_n_items(model);
 
 		for(guint i = 0; i < count; i++) {
@@ -182,5 +180,5 @@
 		}
 	}
 
-	gtk_drop_down_set_selected(chooser->dropdown, position);
+	adw_combo_row_set_selected(ADW_COMBO_ROW(chooser), position);
 }
--- a/pidgin/pidginprotocolchooser.h	Thu Sep 15 23:33:56 2022 -0500
+++ b/pidgin/pidginprotocolchooser.h	Thu Sep 15 23:38:08 2022 -0500
@@ -38,7 +38,7 @@
 #define PIDGIN_TYPE_PROTOCOL_CHOOSER (pidgin_protocol_chooser_get_type())
 
 G_DECLARE_FINAL_TYPE(PidginProtocolChooser, pidgin_protocol_chooser, PIDGIN,
-                     PROTOCOL_CHOOSER, AdwBin)
+                     PROTOCOL_CHOOSER, AdwComboRow)
 
 /**
  * pidgin_protocol_chooser_new:
--- a/pidgin/resources/Accounts/editor.ui	Thu Sep 15 23:33:56 2022 -0500
+++ b/pidgin/resources/Accounts/editor.ui	Thu Sep 15 23:38:08 2022 -0500
@@ -47,17 +47,10 @@
                   <object class="AdwPreferencesGroup" id="login_options">
                     <property name="title" translatable="1">Login Options</property>
                     <child>
-                      <object class="AdwActionRow">
-                        <property name="activatable-widget">protocol</property>
+                      <object class="PidginProtocolChooser" id="protocol">
                         <property name="title" translatable="1">Pro_tocol</property>
                         <property name="use-underline">1</property>
-                        <child>
-                          <object class="PidginProtocolChooser" id="protocol">
-                            <property name="hexpand">1</property>
-                            <property name="valign">center</property>
-                            <signal name="notify::protocol" handler="pidgin_account_editor_protocol_changed_cb" object="PidginAccountEditor" swapped="no"/>
-                          </object>
-                        </child>
+                        <signal name="notify::protocol" handler="pidgin_account_editor_protocol_changed_cb" object="PidginAccountEditor" swapped="no"/>
                       </object>
                     </child>
                     <child>
--- a/pidgin/resources/Protocols/chooser.ui	Thu Sep 15 23:33:56 2022 -0500
+++ b/pidgin/resources/Protocols/chooser.ui	Thu Sep 15 23:38:08 2022 -0500
@@ -24,12 +24,10 @@
   <!-- interface-name Pidgin -->
   <!-- interface-description Internet Messenger -->
   <!-- interface-copyright Pidgin Developers <devel@pidgin.im> -->
-  <template class="PidginProtocolChooser" parent="AdwBin">
-    <property name="child">
-      <object class="GtkDropDown" id="dropdown">
-        <property name="factory">
-          <object class="GtkBuilderListItemFactory">
-            <property name="bytes">
+  <template class="PidginProtocolChooser" parent="AdwComboRow">
+    <property name="factory">
+      <object class="GtkBuilderListItemFactory">
+        <property name="bytes">
 <![CDATA[
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
@@ -62,22 +60,20 @@
   </template>
 </interface>
 ]]>
+        </property>
+      </object>
+    </property>
+    <property name="model">
+      <object class="GtkSortListModel" id="sort">
+        <property name="sorter">
+          <object class="GtkStringSorter">
+            <property name="expression">
+              <lookup name="name" type="PurpleProtocol"/>
             </property>
           </object>
         </property>
-        <property name="model">
-          <object class="GtkSortListModel" id="sort">
-            <property name="sorter">
-              <object class="GtkStringSorter">
-                <property name="expression">
-                  <lookup name="name" type="PurpleProtocol"/>
-                </property>
-              </object>
-            </property>
-          </object>
-        </property>
-        <signal name="notify::selected" handler="dropdown_changed_cb" object="PidginProtocolChooser" swapped="no"/>
       </object>
     </property>
+    <signal name="notify::selected" handler="dropdown_changed_cb" object="PidginProtocolChooser" swapped="no"/>
   </template>
 </interface>

mercurial