Blame 0019-gui-reload-destroyed-sensitive-data-warn-widgets-fro.patch

Jakub Filak e5933ff
From aa8b6220a83dbccc9df31f988c1b8dcfef8833b5 Mon Sep 17 00:00:00 2001
Jakub Filak e5933ff
From: Jakub Filak <jfilak@redhat.com>
Jakub Filak e5933ff
Date: Wed, 30 Jul 2014 13:48:59 +0200
Jakub Filak e5933ff
Subject: [PATCH 19/20] gui: reload destroyed sensitive data warn widgets from
Jakub Filak e5933ff
 the galde
Jakub Filak e5933ff
Jakub Filak e5933ff
clear_warnings() destroys the warning widgets. The sensitive data
Jakub Filak e5933ff
widgets needs to be reloaded as GtkBuilder does not return clones of
Jakub Filak e5933ff
object but the instances from its cache.
Jakub Filak e5933ff
Jakub Filak e5933ff
Related to rhbz#1069917
Jakub Filak e5933ff
Jakub Filak e5933ff
Signed-off-by: Jakub Filak <jfilak@redhat.com>
Jakub Filak e5933ff
---
Jakub Filak e5933ff
 src/gui-wizard-gtk/wizard.c | 75 +++++++++++++++++++++++++++------------------
Jakub Filak e5933ff
 1 file changed, 46 insertions(+), 29 deletions(-)
Jakub Filak e5933ff
Jakub Filak e5933ff
diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c
Jakub Filak e5933ff
index c9d5926..e803394 100644
Jakub Filak e5933ff
--- a/src/gui-wizard-gtk/wizard.c
Jakub Filak e5933ff
+++ b/src/gui-wizard-gtk/wizard.c
Jakub Filak e5933ff
@@ -229,6 +229,45 @@ static bool check_minimal_bt_rating(const char *event_name);
Jakub Filak e5933ff
 static char *get_next_processed_event(GList **events_list);
Jakub Filak e5933ff
 static void on_next_btn_cb(GtkWidget *btn, gpointer user_data);
Jakub Filak e5933ff
 
Jakub Filak e5933ff
+/* wizard.glade file as a string WIZARD_GLADE_CONTENTS: */
Jakub Filak e5933ff
+#include "wizard_glade.c"
Jakub Filak e5933ff
+
Jakub Filak e5933ff
+static GtkBuilder *make_builder()
Jakub Filak e5933ff
+{
Jakub Filak e5933ff
+    GError *error = NULL;
Jakub Filak e5933ff
+    GtkBuilder *builder = gtk_builder_new();
Jakub Filak e5933ff
+    if (!g_glade_file)
Jakub Filak e5933ff
+    {
Jakub Filak e5933ff
+        /* load additional widgets from glade */
Jakub Filak e5933ff
+        gtk_builder_add_objects_from_string(builder,
Jakub Filak e5933ff
+                WIZARD_GLADE_CONTENTS, sizeof(WIZARD_GLADE_CONTENTS) - 1,
Jakub Filak e5933ff
+                (gchar**)misc_widgets,
Jakub Filak e5933ff
+                &error);
Jakub Filak e5933ff
+        if (error != NULL)
Jakub Filak e5933ff
+            error_msg_and_die("Error loading glade data: %s", error->message);
Jakub Filak e5933ff
+        /* Load pages from internal string */
Jakub Filak e5933ff
+        gtk_builder_add_objects_from_string(builder,
Jakub Filak e5933ff
+                WIZARD_GLADE_CONTENTS, sizeof(WIZARD_GLADE_CONTENTS) - 1,
Jakub Filak e5933ff
+                (gchar**)page_names,
Jakub Filak e5933ff
+                &error);
Jakub Filak e5933ff
+        if (error != NULL)
Jakub Filak e5933ff
+            error_msg_and_die("Error loading glade data: %s", error->message);
Jakub Filak e5933ff
+    }
Jakub Filak e5933ff
+    else
Jakub Filak e5933ff
+    {
Jakub Filak e5933ff
+        /* -g FILE: load UI from it */
Jakub Filak e5933ff
+        /* load additional widgets from glade */
Jakub Filak e5933ff
+        gtk_builder_add_objects_from_file(builder, g_glade_file, (gchar**)misc_widgets, &error);
Jakub Filak e5933ff
+        if (error != NULL)
Jakub Filak e5933ff
+            error_msg_and_die("Can't load %s: %s", g_glade_file, error->message);
Jakub Filak e5933ff
+        gtk_builder_add_objects_from_file(builder, g_glade_file, (gchar**)page_names, &error);
Jakub Filak e5933ff
+        if (error != NULL)
Jakub Filak e5933ff
+            error_msg_and_die("Can't load %s: %s", g_glade_file, error->message);
Jakub Filak e5933ff
+    }
Jakub Filak e5933ff
+
Jakub Filak e5933ff
+    return builder;
Jakub Filak e5933ff
+}
Jakub Filak e5933ff
+
Jakub Filak e5933ff
 static void label_wrapper(GtkWidget *widget, gpointer data_unused)
Jakub Filak e5933ff
 {
Jakub Filak e5933ff
     if (GTK_IS_CONTAINER(widget))
Jakub Filak e5933ff
@@ -2108,11 +2147,15 @@ static void on_sensitive_ticket_clicked_cb(GtkWidget *button, gpointer user_data
Jakub Filak e5933ff
 
Jakub Filak e5933ff
 static void add_sensitive_data_warning(void)
Jakub Filak e5933ff
 {
Jakub Filak e5933ff
-    GtkWidget *sens_data_warn = GTK_WIDGET(gtk_builder_get_object(g_builder, SENSITIVE_DATA_WARN));
Jakub Filak e5933ff
-    GtkButton *sens_ticket_cb = GTK_BUTTON(gtk_builder_get_object(g_builder, PRIVATE_TICKET_CB));
Jakub Filak e5933ff
+    GtkBuilder *builder = make_builder();
Jakub Filak e5933ff
+
Jakub Filak e5933ff
+    GtkWidget *sens_data_warn = GTK_WIDGET(gtk_builder_get_object(builder, SENSITIVE_DATA_WARN));
Jakub Filak e5933ff
+    GtkButton *sens_ticket_cb = GTK_BUTTON(gtk_builder_get_object(builder, PRIVATE_TICKET_CB));
Jakub Filak e5933ff
 
Jakub Filak e5933ff
     g_signal_connect(sens_ticket_cb, "toggled", G_CALLBACK(on_sensitive_ticket_clicked_cb), NULL);
Jakub Filak e5933ff
     add_widget_to_warning_area(GTK_WIDGET(sens_data_warn));
Jakub Filak e5933ff
+
Jakub Filak e5933ff
+    g_object_unref(builder);
Jakub Filak e5933ff
 }
Jakub Filak e5933ff
 
Jakub Filak e5933ff
 static void show_warnings(void)
Jakub Filak e5933ff
@@ -3173,9 +3216,6 @@ static gint on_key_press_event_in_item_list(GtkTreeView *treeview, GdkEventKey *
Jakub Filak e5933ff
 
Jakub Filak e5933ff
 /* Initialization */
Jakub Filak e5933ff
 
Jakub Filak e5933ff
-/* wizard.glade file as a string WIZARD_GLADE_CONTENTS: */
Jakub Filak e5933ff
-#include "wizard_glade.c"
Jakub Filak e5933ff
-
Jakub Filak e5933ff
 static void on_next_btn_cb(GtkWidget *btn, gpointer user_data)
Jakub Filak e5933ff
 {
Jakub Filak e5933ff
     gint current_page_no = gtk_notebook_get_current_page(g_assistant);
Jakub Filak e5933ff
@@ -3190,30 +3230,7 @@ static void on_next_btn_cb(GtkWidget *btn, gpointer user_data)
Jakub Filak e5933ff
 
Jakub Filak e5933ff
 static void add_pages(void)
Jakub Filak e5933ff
 {
Jakub Filak e5933ff
-    GError *error = NULL;
Jakub Filak e5933ff
-    g_builder = gtk_builder_new();
Jakub Filak e5933ff
-    if (!g_glade_file)
Jakub Filak e5933ff
-    {
Jakub Filak e5933ff
-        /* load additional widgets from glade */
Jakub Filak e5933ff
-        gtk_builder_add_objects_from_string(g_builder,
Jakub Filak e5933ff
-                WIZARD_GLADE_CONTENTS, sizeof(WIZARD_GLADE_CONTENTS) - 1,
Jakub Filak e5933ff
-                (gchar**)misc_widgets,
Jakub Filak e5933ff
-                &error);
Jakub Filak e5933ff
-        /* Load pages from internal string */
Jakub Filak e5933ff
-        gtk_builder_add_objects_from_string(g_builder,
Jakub Filak e5933ff
-                WIZARD_GLADE_CONTENTS, sizeof(WIZARD_GLADE_CONTENTS) - 1,
Jakub Filak e5933ff
-                (gchar**)page_names,
Jakub Filak e5933ff
-                &error);
Jakub Filak e5933ff
-        if (error != NULL)
Jakub Filak e5933ff
-            error_msg_and_die("Error loading glade data: %s", error->message);
Jakub Filak e5933ff
-    }
Jakub Filak e5933ff
-    else
Jakub Filak e5933ff
-    {
Jakub Filak e5933ff
-        /* -g FILE: load IU from it */
Jakub Filak e5933ff
-        gtk_builder_add_objects_from_file(g_builder, g_glade_file, (gchar**)page_names, &error);
Jakub Filak e5933ff
-        if (error != NULL)
Jakub Filak e5933ff
-            error_msg_and_die("Can't load %s: %s", g_glade_file, error->message);
Jakub Filak e5933ff
-    }
Jakub Filak e5933ff
+    g_builder = make_builder();
Jakub Filak e5933ff
 
Jakub Filak e5933ff
     int i;
Jakub Filak e5933ff
     int page_no = 0;
Jakub Filak e5933ff
-- 
Jakub Filak e5933ff
2.0.4
Jakub Filak e5933ff