Thu, 15 Sep 2022 23:38:08 -0500
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/
--- 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>