From c43eeea9549fdc8b4f4d168f94797b30352d3de7 Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Wed, 20 Oct 2021 13:56:29 -0300 Subject: [PATCH] removable-media: Port to GTK4 A pretty boring, regular port again. No new challenges here. --- panels/meson.build | 2 +- .../cc-removable-media-panel.c | 35 +- .../cc-removable-media-panel.ui | 386 ++++++------------ shell/cc-panel-loader.c | 4 +- 4 files changed, 127 insertions(+), 300 deletions(-) diff --git a/panels/meson.build b/panels/meson.build index 159fba0bc..0e09f4ab1 100644 --- a/panels/meson.build +++ b/panels/meson.build @@ -21,7 +21,7 @@ panels = [ # 'power', # 'printers', # 'region', -# 'removable-media', + 'removable-media', # 'search', # 'sharing', 'sound', diff --git a/panels/removable-media/cc-removable-media-panel.c b/panels/removable-media/cc-removable-media-panel.c index a891855c0..6ce238ede 100644 --- a/panels/removable-media/cc-removable-media-panel.c +++ b/panels/removable-media/cc-removable-media-panel.c @@ -64,17 +64,6 @@ struct _CcRemovableMediaPanel G_DEFINE_TYPE (CcRemovableMediaPanel, cc_removable_media_panel, CC_TYPE_PANEL) -static void -ellipsize_cell_layout (GtkCellLayout *cell_layout) -{ - g_autoptr(GList) cells = gtk_cell_layout_get_cells (cell_layout); - GList *cell; - - for (cell = cells; cell; cell = cell->next) - if (GTK_IS_CELL_RENDERER_TEXT (cell->data)) - g_object_set (G_OBJECT (cell->data), "ellipsize", PANGO_ELLIPSIZE_END, NULL); -} - static char ** remove_elem_from_str_array (char **v, const char *s) @@ -309,14 +298,13 @@ on_other_type_combo_box_changed (CcRemovableMediaPanel *self) -1); if (self->other_application_chooser != NULL) { - gtk_widget_destroy (GTK_WIDGET (self->other_application_chooser)); + gtk_box_remove (self->other_action_box, GTK_WIDGET (self->other_application_chooser)); + self->other_application_chooser = NULL; } self->other_application_chooser = GTK_APP_CHOOSER_BUTTON (gtk_app_chooser_button_new (x_content_type)); - ellipsize_cell_layout (GTK_CELL_LAYOUT (self->other_application_chooser)); - gtk_box_pack_start (self->other_action_box, GTK_WIDGET (self->other_application_chooser), TRUE, TRUE, 0); + gtk_box_append (self->other_action_box, GTK_WIDGET (self->other_application_chooser)); prepare_chooser (self, self->other_application_chooser, NULL); - gtk_widget_show (GTK_WIDGET (self->other_application_chooser)); gtk_label_set_mnemonic_widget (self->other_action_label, GTK_WIDGET (self->other_application_chooser)); } @@ -327,7 +315,7 @@ on_extra_options_dialog_response (CcRemovableMediaPanel *self) gtk_widget_hide (GTK_WIDGET (self->other_type_dialog)); if (self->other_application_chooser != NULL) { - gtk_widget_destroy (GTK_WIDGET (self->other_application_chooser)); + gtk_box_remove (self->other_action_box, GTK_WIDGET (self->other_application_chooser)); self->other_application_chooser = NULL; } } @@ -335,8 +323,10 @@ on_extra_options_dialog_response (CcRemovableMediaPanel *self) static void on_extra_options_button_clicked (CcRemovableMediaPanel *self) { - gtk_window_set_transient_for (GTK_WINDOW (self->other_type_dialog), - GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (self)))); + CcShell *shell = cc_panel_get_shell (CC_PANEL (self)); + GtkWidget *toplevel = cc_shell_get_toplevel (shell); + + gtk_window_set_transient_for (GTK_WINDOW (self->other_type_dialog), GTK_WINDOW (toplevel)); gtk_window_set_modal (GTK_WINDOW (self->other_type_dialog), TRUE); gtk_window_set_title (GTK_WINDOW (self->other_type_dialog), _("Other Media")); /* update other_application_chooser */ @@ -474,7 +464,7 @@ cc_removable_media_panel_dispose (GObject *object) { CcRemovableMediaPanel *self = CC_REMOVABLE_MEDIA_PANEL (object); - g_clear_pointer ((GtkWidget **) &self->other_type_dialog, gtk_widget_destroy); + g_clear_pointer ((GtkWindow **) &self->other_type_dialog, gtk_window_destroy); G_OBJECT_CLASS (cc_removable_media_panel_parent_class)->dispose (object); } @@ -517,12 +507,5 @@ cc_removable_media_panel_init (CcRemovableMediaPanel *self) gtk_widget_init_template (GTK_WIDGET (self)); self->settings = g_settings_new (MEDIA_HANDLING_SCHEMA); - ellipsize_cell_layout (GTK_CELL_LAYOUT (self->audio_cdda_chooser)); - ellipsize_cell_layout (GTK_CELL_LAYOUT (self->video_dvd_chooser)); - ellipsize_cell_layout (GTK_CELL_LAYOUT (self->music_player_chooser)); - ellipsize_cell_layout (GTK_CELL_LAYOUT (self->dcf_chooser)); - ellipsize_cell_layout (GTK_CELL_LAYOUT (self->software_chooser)); - ellipsize_cell_layout (GTK_CELL_LAYOUT (self->other_type_combo_box)); - info_panel_setup_media (self); } diff --git a/panels/removable-media/cc-removable-media-panel.ui b/panels/removable-media/cc-removable-media-panel.ui index 2feb46cfe..8ed43d5f3 100644 --- a/panels/removable-media/cc-removable-media-panel.ui +++ b/panels/removable-media/cc-removable-media-panel.ui @@ -2,42 +2,30 @@ - False - 10 False True True - dialog 1 - + True - + - True - False + 18 + 18 + 18 + 18 vertical - 2 - True - False - 5 + 10 vertical + + + 0 + Select how other media should be handled + + + + + - True - False - 10 + 6 + 12 vertical - - True - False - 0 - Select how other media should be handled - - - - - - False - False - 0 - - - - - True - False - 6 - 12 - vertical + + 6 + 10 - - True - False - 6 - 10 + + other_type_list_store + + + 1 + 0 + - - True - False - other_type_list_store - - - - - 0 - - - - - 1 - 0 - - - - - True - False - 0 - _Action: - True - - - 0 - 1 - - - - - True - False - - - 1 - 1 - - - - - True - False - 0 - _Type: - True - other_type_combo_box - - - 0 - 0 - + + + 0 + - - False - True - 1 - + + + + 0 + _Action: + True + + 0 + 1 + + + + + + + 1 + 1 + + + + + + 0 + _Type: + True + other_type_combo_box + + 0 + 0 + + - - False - True - 1 - - - False - True - 0 - - - False - True - 1 - diff --git a/shell/cc-panel-loader.c b/shell/cc-panel-loader.c index 7b68ab8e7..661807a2a 100644 --- a/shell/cc-panel-loader.c +++ b/shell/cc-panel-loader.c @@ -53,7 +53,7 @@ extern GType cc_notifications_panel_get_type (void); //extern GType cc_power_panel_get_type (void); //extern GType cc_printers_panel_get_type (void); //extern GType cc_region_panel_get_type (void); -//extern GType cc_removable_media_panel_get_type (void); +extern GType cc_removable_media_panel_get_type (void); //extern GType cc_search_panel_get_type (void); //extern GType cc_sharing_panel_get_type (void); extern GType cc_sound_panel_get_type (void); @@ -124,7 +124,7 @@ static CcPanelLoaderVtable default_panels[] = //PANEL_TYPE("power", cc_power_panel_get_type, NULL), //PANEL_TYPE("printers", cc_printers_panel_get_type, NULL), //PANEL_TYPE("region", cc_region_panel_get_type, NULL), - //PANEL_TYPE("removable-media", cc_removable_media_panel_get_type, NULL), + PANEL_TYPE("removable-media", cc_removable_media_panel_get_type, NULL), //PANEL_TYPE("search", cc_search_panel_get_type, NULL), //PANEL_TYPE("sharing", cc_sharing_panel_get_type, NULL), PANEL_TYPE("sound", cc_sound_panel_get_type, NULL),