From 1c13cc77ca4ad5293d028340dac8a18dc0816e12 Mon Sep 17 00:00:00 2001 From: Viktor Odintsev Date: Wed, 13 Sep 2017 02:16:02 +0300 Subject: [PATCH] Remove existing socket from socket viewport (Bug #13847) --- .../xfce-settings-manager-dialog.c | 30 ++++++++++++++-------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/xfce4-settings-manager/xfce-settings-manager-dialog.c b/xfce4-settings-manager/xfce-settings-manager-dialog.c index e6411a6..f74f818 100644 --- a/xfce4-settings-manager/xfce-settings-manager-dialog.c +++ b/xfce4-settings-manager/xfce-settings-manager-dialog.c @@ -593,10 +593,26 @@ xfce_settings_manager_dialog_iconview_focus (GtkWidget *iconview static void -xfce_settings_manager_dialog_go_back (XfceSettingsManagerDialog *dialog) +xfce_settings_manager_dialog_remove_socket (XfceSettingsManagerDialog *dialog) { GtkWidget *socket; + socket = gtk_bin_get_child (GTK_BIN (dialog->socket_viewport)); + if (G_UNLIKELY (socket != NULL)) + gtk_container_remove (GTK_CONTAINER (dialog->socket_viewport), socket); + + if (dialog->socket_item != NULL) + { + g_object_unref (G_OBJECT (dialog->socket_item)); + dialog->socket_item = NULL; + } +} + + + +static void +xfce_settings_manager_dialog_go_back (XfceSettingsManagerDialog *dialog) +{ /* make sure no cursor is shown */ gdk_window_set_cursor (gtk_widget_get_window (GTK_WIDGET(dialog)), NULL); @@ -620,15 +636,7 @@ xfce_settings_manager_dialog_go_back (XfceSettingsManagerDialog *dialog) gtk_entry_set_text (GTK_ENTRY (dialog->filter_entry), ""); gtk_widget_grab_focus (dialog->filter_entry); - socket = gtk_bin_get_child (GTK_BIN (dialog->socket_viewport)); - if (G_LIKELY (socket != NULL)) - gtk_widget_destroy (socket); - - if (dialog->socket_item != NULL) - { - g_object_unref (G_OBJECT (dialog->socket_item)); - dialog->socket_item = NULL; - } + xfce_settings_manager_dialog_remove_socket (dialog); } @@ -872,6 +880,8 @@ xfce_settings_manager_dialog_spawn (XfceSettingsManagerDialog *dialog, gdk_window_set_cursor (gtk_widget_get_window (GTK_WIDGET(dialog)), cursor); g_object_unref (cursor); + xfce_settings_manager_dialog_remove_socket (dialog); + /* create fresh socket */ socket = gtk_socket_new (); gtk_container_add (GTK_CONTAINER (dialog->socket_viewport), socket); -- 2.14.1