[libreport/f21] UX improvements
Jakub Filak
jfilak at fedoraproject.org
Fri Jul 25 11:16:39 UTC 2014
commit 9dc4db82708e46510485ee93df4beaa3391db7ea
Author: Jakub Filak <jfilak at redhat.com>
Date: Wed Jul 23 09:02:38 2014 +0200
UX improvements
...clude-json.h-accordingly-to-json-c-CFLAGS.patch | 34 +++++
...port-implement-attaching-of-user-comments.patch | 133 ++++++++++++++++++++
...clude-json.h-accordingly-to-json-c-CFLAGS.patch | 45 +++++++
...ke-preferences-dialogue-modal-for-parents.patch | 66 ++++++++++
...elect-the-first-in-the-configuration-list.patch | 34 +++++
0004-gui-wrap-lines-for-human-readable-files.patch | 35 +++++
0005-wizard-fix-help-text-for-screencasting.patch | 32 +++++
...-support-Enter-2Click-in-Preferences-list.patch | 91 +++++++++++++
...onfiguration-dialogues-changes-on-Enter-k.patch | 50 ++++++++
0008-gui-close-ask-dialogues-on-Enter-key.patch | 73 +++++++++++
libreport.spec | 22 +++-
11 files changed, 614 insertions(+), 1 deletions(-)
---
diff --git a/0001-json-include-json.h-accordingly-to-json-c-CFLAGS.patch b/0001-json-include-json.h-accordingly-to-json-c-CFLAGS.patch
new file mode 100644
index 0000000..97a2a96
--- /dev/null
+++ b/0001-json-include-json.h-accordingly-to-json-c-CFLAGS.patch
@@ -0,0 +1,34 @@
+From 1cef1ddc28f327534cfdb433d1f2e10d01b10f44 Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Thu, 24 Jul 2014 16:07:36 +0200
+Subject: [PATCH] json: include json.h accordingly to json-c CFLAGS
+
+We use $(pkg-config --cflags json-c) but we include <json/json.h>. The
+proper way to include the json-c header is to include <json.h>.
+
+That absolute include causes errors while compiling with json-c-0.12
+where the base include directory was changed to "json-c".
+
+https://github.com/json-c/json-c/blob/master/ChangeLog
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/lib/json.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/lib/json.c b/src/lib/json.c
+index 08ffe8c..fc26bc6 100644
+--- a/src/lib/json.c
++++ b/src/lib/json.c
+@@ -17,7 +17,7 @@
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+-#include <json/json.h>
++#include <json.h>
+
+ #include <satyr/abrt.h>
+ #include <satyr/report.h>
+--
+1.9.3
+
diff --git a/0001-ureport-implement-attaching-of-user-comments.patch b/0001-ureport-implement-attaching-of-user-comments.patch
new file mode 100644
index 0000000..dbf886e
--- /dev/null
+++ b/0001-ureport-implement-attaching-of-user-comments.patch
@@ -0,0 +1,133 @@
+From 8b3d8dd997d2103087cbaef4642b52147db97f16 Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Tue, 8 Jul 2014 16:10:01 +0200
+Subject: [PATCH 1/8] ureport: implement attaching of user comments
+
+Closes #199
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/lib/json.c | 10 ++++++++++
+ src/lib/ureport.h | 4 ++++
+ src/plugins/ureport.c | 33 +++++++++++++++++++++++++++++----
+ 3 files changed, 43 insertions(+), 4 deletions(-)
+
+diff --git a/src/lib/json.c b/src/lib/json.c
+index 66db537..08ffe8c 100644
+--- a/src/lib/json.c
++++ b/src/lib/json.c
+@@ -133,3 +133,13 @@ struct post_state *ureport_attach_email(const char *bthash, const char *email,
+
+ return post_state;
+ }
++
++struct post_state *ureport_attach_comment(const char *bthash, const char *comment,
++ struct ureport_server_config *config)
++{
++ char *json_attachment = new_json_attachment(bthash, "comment", comment);
++ struct post_state *post_state = post_ureport(json_attachment, config);
++ free(json_attachment);
++
++ return post_state;
++}
+diff --git a/src/lib/ureport.h b/src/lib/ureport.h
+index 16f40f1..80f26d9 100644
+--- a/src/lib/ureport.h
++++ b/src/lib/ureport.h
+@@ -51,6 +51,10 @@ struct post_state *ureport_attach_rhbz(const char *bthash, int rhbz_bug_id,
+ struct post_state *ureport_attach_email(const char *bthash, const char *email,
+ struct ureport_server_config *config);
+
++#define ureport_attach_comment libreport_ureport_attach_comment
++struct post_state *ureport_attach_comment(const char *bthash, const char *comment,
++ struct ureport_server_config *config);
++
+ #define ureport_from_dump_dir libreport_ureport_from_dump_dir
+ char *ureport_from_dump_dir(const char *dump_dir_path);
+
+diff --git a/src/plugins/ureport.c b/src/plugins/ureport.c
+index 59554f4..e6237cc 100644
+--- a/src/plugins/ureport.c
++++ b/src/plugins/ureport.c
+@@ -435,6 +435,8 @@ int main(int argc, char **argv)
+ bool rhbz_bug_from_rt = false;
+ const char *email_address = NULL;
+ bool email_address_from_env = false;
++ char *comment = NULL;
++ bool comment_file = NULL;
+ struct dump_dir *dd = NULL;
+ struct options program_options[] = {
+ OPT__VERBOSE(&g_verbose),
+@@ -456,11 +458,16 @@ int main(int argc, char **argv)
+ _("attach RHBZ bug (requires -a|-A, conflicts with -B)")),
+ OPT_BOOL('B', "bug-id-rt", &rhbz_bug_from_rt,
+ _("attach last RHBZ bug from reported_to (requires -a|-A, conflicts with -b)")),
++ OPT_STRING('o', "comment", &comment, "DESCRIPTION",
++ _("attach short text (requires -a|-A, conflicts with -D)")),
++ OPT_BOOL('O', "comment-file", &comment_file,
++ _("attach short text from comment (requires -a|-A, conflicts with -d)")),
++
+ OPT_END(),
+ };
+
+ const char *program_usage_string = _(
+- "& [-v] [-c FILE] [-u URL] [-k] [-t SOURCE] [-A -a bthash -B -b bug-id -E -e email] [-d DIR]\n"
++ "& [-v] [-c FILE] [-u URL] [-k] [-t SOURCE] [-A -a bthash -B -b bug-id -E -e email -O -o comment] [-d DIR]\n"
+ "\n"
+ "Upload micro report or add an attachment to a micro report\n"
+ "\n"
+@@ -495,7 +502,10 @@ int main(int argc, char **argv)
+ if (email_address && email_address_from_env)
+ error_msg_and_die("You need to pass either -e bthash or -E");
+
+- if (ureport_hash_from_rt || rhbz_bug_from_rt)
++ if (comment && comment_file)
++ error_msg_and_die("You need to pass either -o comment or -O");
++
++ if (ureport_hash_from_rt || rhbz_bug_from_rt || comment_file)
+ {
+ dd = dd_opendir(dump_dir_path, DD_OPEN_READONLY);
+ if (!dd)
+@@ -533,6 +543,15 @@ int main(int argc, char **argv)
+ free_report_result(bz_result);
+ }
+
++ if (comment_file)
++ {
++ comment = dd_load_text(dd, FILENAME_COMMENT);
++ if (comment == NULL)
++ error_msg_and_die(_("Cannot attach comment from 'comment' file"));
++ if (comment[0] == '\0')
++ error_msg_and_die(_("'comment' file is empty"));
++ }
++
+ dd_close(dd);
+ }
+
+@@ -546,8 +565,8 @@ int main(int argc, char **argv)
+
+ if (ureport_hash)
+ {
+- if (rhbz_bug < 0 && !email_address)
+- error_msg_and_die(_("You need to specify bug ID, contact email or both"));
++ if (rhbz_bug < 0 && !email_address && !comment)
++ error_msg_and_die(_("You need to specify bug ID, contact email, comment or all of them"));
+
+ if (rhbz_bug >= 0)
+ {
+@@ -561,6 +580,12 @@ int main(int argc, char **argv)
+ goto finalize;
+ }
+
++ if (comment)
++ {
++ if (perform_attach(&config, ureport_hash, (attach_handler)ureport_attach_comment, (void *)comment))
++ goto finalize;
++ }
++
+ ret = 0;
+ goto finalize;
+ }
+--
+1.9.3
+
diff --git a/0001-ureport-include-json.h-accordingly-to-json-c-CFLAGS.patch b/0001-ureport-include-json.h-accordingly-to-json-c-CFLAGS.patch
new file mode 100644
index 0000000..f137c47
--- /dev/null
+++ b/0001-ureport-include-json.h-accordingly-to-json-c-CFLAGS.patch
@@ -0,0 +1,45 @@
+From cc36c5c2b109fa7ac864400e695c88808b19a5ed Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Fri, 25 Jul 2014 12:39:28 +0200
+Subject: [PATCH] ureport: include json.h accordingly to json-c CFLAGS
+
+commit 1cef1ddc28f327534cfdb433d1f2e10d01b10f44
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/plugins/Makefile.am | 2 ++
+ src/plugins/ureport.c | 2 +-
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am
+index 2d95f07..7e0e753 100644
+--- a/src/plugins/Makefile.am
++++ b/src/plugins/Makefile.am
+@@ -260,9 +260,11 @@ reporter_ureport_CPPFLAGS = \
+ -I$(srcdir)/../lib \
+ $(GLIB_CFLAGS) \
+ $(LIBREPORT_CFLAGS) \
++ $(JSON_C_CFLAGS) \
+ -DPLUGINS_CONF_DIR=\"$(REPORT_PLUGINS_CONF_DIR)\" \
+ -D_GNU_SOURCE
+ reporter_ureport_LDADD = \
++ $(JSON_C_LIBS) \
+ ../lib/libreport.la \
+ ../lib/libreport-web.la
+ endif
+diff --git a/src/plugins/ureport.c b/src/plugins/ureport.c
+index e6237cc..063a1e7 100644
+--- a/src/plugins/ureport.c
++++ b/src/plugins/ureport.c
+@@ -17,7 +17,7 @@
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+-#include <json/json.h>
++#include <json.h>
+ #include "internal_libreport.h"
+ #include "ureport.h"
+ #include "libreport_curl.h"
+--
+1.9.3
+
diff --git a/0002-gui-make-preferences-dialogue-modal-for-parents.patch b/0002-gui-make-preferences-dialogue-modal-for-parents.patch
new file mode 100644
index 0000000..6867b74
--- /dev/null
+++ b/0002-gui-make-preferences-dialogue-modal-for-parents.patch
@@ -0,0 +1,66 @@
+From b1911301e6c8cbe0ae4ea90d4e0cbb08e575e743 Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Fri, 18 Jul 2014 08:28:04 +0200
+Subject: [PATCH 2/8] gui: make preferences dialogue modal for parents
+
+Resolves rhbz#1120879
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/gtk-helpers/config_dialog.c | 26 +++++++++++++++++++-------
+ 1 file changed, 19 insertions(+), 7 deletions(-)
+
+diff --git a/src/gtk-helpers/config_dialog.c b/src/gtk-helpers/config_dialog.c
+index 6de08e3..2397df7 100644
+--- a/src/gtk-helpers/config_dialog.c
++++ b/src/gtk-helpers/config_dialog.c
+@@ -282,7 +282,17 @@ GtkWindow *create_config_list_window(GHashTable *configs, GtkWindow *parent)
+ INITIALIZE_LIBREPORT();
+
+ // config window
+- GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
++ GtkWidget *window = NULL;
++ if (parent != NULL)
++ {
++ window = gtk_dialog_new();
++ gtk_window_set_icon_name(GTK_WINDOW(window), gtk_window_get_icon_name(parent));
++ gtk_window_set_modal(GTK_WINDOW(window), TRUE);
++ gtk_window_set_transient_for(GTK_WINDOW(window), parent);
++ }
++ else
++ window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
++
+ gtk_container_set_border_width(GTK_CONTAINER(window), 5);
+ gtk_window_set_title(GTK_WINDOW(window), _("Configuration"));
+ gtk_window_set_default_size(GTK_WINDOW(window), 450, 400);
+@@ -290,11 +300,6 @@ GtkWindow *create_config_list_window(GHashTable *configs, GtkWindow *parent)
+ ? GTK_WIN_POS_CENTER_ON_PARENT
+ : GTK_WIN_POS_CENTER);
+
+- if (parent != NULL)
+- {
+- gtk_window_set_modal(GTK_WINDOW(window), true);
+- gtk_window_set_transient_for(GTK_WINDOW(window), parent);
+- }
+
+ //g_signal_connect(window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
+
+@@ -334,7 +339,14 @@ GtkWindow *create_config_list_window(GHashTable *configs, GtkWindow *parent)
+
+
+ gtk_box_pack_start(GTK_BOX(main_vbox), btn_box, 0, 0, 0);
+- gtk_container_add(GTK_CONTAINER(window), main_vbox);
++ if (parent != NULL)
++ {
++ GtkWidget *content = gtk_dialog_get_content_area(GTK_DIALOG(window));
++ gtk_box_pack_start(GTK_BOX(content), main_vbox, /*expand*/TRUE, /*fill*/TRUE, /*padding*/0);
++ gtk_widget_show_all(content);
++ }
++ else
++ gtk_container_add(GTK_CONTAINER(window), main_vbox);
+
+ //gtk_widget_show_all(window);
+ return GTK_WINDOW(window);
+--
+1.9.3
+
diff --git a/0003-gui-select-the-first-in-the-configuration-list.patch b/0003-gui-select-the-first-in-the-configuration-list.patch
new file mode 100644
index 0000000..1e3c894
--- /dev/null
+++ b/0003-gui-select-the-first-in-the-configuration-list.patch
@@ -0,0 +1,34 @@
+From 24885018e6cef6fc1c23ca81803a3787c7b30b1d Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Fri, 18 Jul 2014 08:51:08 +0200
+Subject: [PATCH 3/8] gui: select the first in the configuration list
+
+Resolves rhbz#1120881
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/gtk-helpers/config_dialog.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/src/gtk-helpers/config_dialog.c b/src/gtk-helpers/config_dialog.c
+index 2397df7..c99ea85 100644
+--- a/src/gtk-helpers/config_dialog.c
++++ b/src/gtk-helpers/config_dialog.c
+@@ -239,6 +239,14 @@ GtkWidget *create_config_tab_content(const char *column_label,
+ gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(model), config_filter_func, NULL, NULL);
+
+ gtk_tree_view_set_model(GTK_TREE_VIEW(tv), GTK_TREE_MODEL(model));
++
++ { /* Selected the first row, so we do not need to call gtk_tree_view_scroll_to_cell() */
++ GtkTreeIter iter;
++ gtk_tree_model_get_iter_first(model, &iter);
++ GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tv));
++ gtk_tree_selection_select_iter(selection, &iter);
++ }
++
+ gtk_container_add(GTK_CONTAINER(scroll), tv);
+
+ gtk_box_pack_start(GTK_BOX(main_vbox), scroll, true, true, 10);
+--
+1.9.3
+
diff --git a/0004-gui-wrap-lines-for-human-readable-files.patch b/0004-gui-wrap-lines-for-human-readable-files.patch
new file mode 100644
index 0000000..7472f20
--- /dev/null
+++ b/0004-gui-wrap-lines-for-human-readable-files.patch
@@ -0,0 +1,35 @@
+From 36ef849dce4cb702852822017807ad8faf8ae622 Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Fri, 18 Jul 2014 09:04:47 +0200
+Subject: [PATCH 4/8] gui: wrap lines for human readable files
+
+Wrap lines for comment and reason files.
+
+Do not wrap lines for maps, backtrace, environ and ... becuase
+these files are something like lists consiting from lines.
+
+Resolves rhbz#1120871
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/gui-wizard-gtk/wizard.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c
+index ae3e2df..68af9bd 100644
+--- a/src/gui-wizard-gtk/wizard.c
++++ b/src/gui-wizard-gtk/wizard.c
+@@ -1129,6 +1129,10 @@ static void append_item_to_ls_details(gpointer name, gpointer value, gpointer da
+ {
+ GtkWidget *tab_lbl = gtk_label_new((char *)name);
+ GtkWidget *tev = gtk_text_view_new();
++
++ if (strcmp(name, FILENAME_COMMENT) == 0 || strcmp(name, FILENAME_REASON) == 0)
++ gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(tev), GTK_WRAP_WORD);
++
+ gtk_widget_override_font(GTK_WIDGET(tev), g_monospace_font);
+ load_text_to_text_view(GTK_TEXT_VIEW(tev), (char *)name);
+ /* init searching */
+--
+1.9.3
+
diff --git a/0005-wizard-fix-help-text-for-screencasting.patch b/0005-wizard-fix-help-text-for-screencasting.patch
new file mode 100644
index 0000000..ec9de00
--- /dev/null
+++ b/0005-wizard-fix-help-text-for-screencasting.patch
@@ -0,0 +1,32 @@
+From f5ca628791e23af0ebfae6bbee715efe1e90e34d Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Fri, 18 Jul 2014 13:38:40 +0200
+Subject: [PATCH 5/8] wizard: fix help text for screencasting
+
+Related to rhbz#1120870
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/gui-wizard-gtk/wizard.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c
+index 68af9bd..16b06db 100644
+--- a/src/gui-wizard-gtk/wizard.c
++++ b/src/gui-wizard-gtk/wizard.c
+@@ -3490,10 +3490,10 @@ void create_assistant(bool expert_mode)
+ gtk_widget_set_sensitive(GTK_WIDGET(g_btn_startcast), false);
+ gtk_widget_set_tooltip_markup(GTK_WIDGET(g_btn_startcast),
+ _("In order to enable the built-in screencasting "
+- "functionality the package recordmydesktop has to be installed. "
++ "functionality the package fros-recordmydesktop has to be installed. "
+ "Please run the following command if you want to install it."
+ "\n\n"
+- "<b>su -c \"yum install recordmydesktop\"</b>"
++ "<b>su -c \"yum install fros-recordmydesktop\"</b>"
+ ));
+ }
+
+--
+1.9.3
+
diff --git a/0006-gui-support-Enter-2Click-in-Preferences-list.patch b/0006-gui-support-Enter-2Click-in-Preferences-list.patch
new file mode 100644
index 0000000..37350dd
--- /dev/null
+++ b/0006-gui-support-Enter-2Click-in-Preferences-list.patch
@@ -0,0 +1,91 @@
+From 7eccd835673ebea736a756537c8ca7c1b9ab711a Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Fri, 18 Jul 2014 11:11:57 +0200
+Subject: [PATCH 6/8] gui: support Enter & 2Click in Preferences list
+
+Related to rhbz#1067123
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/gtk-helpers/config_dialog.c | 43 +++++++++++++++++++++++++++++++++++++----
+ 1 file changed, 39 insertions(+), 4 deletions(-)
+
+diff --git a/src/gtk-helpers/config_dialog.c b/src/gtk-helpers/config_dialog.c
+index c99ea85..2a723cc 100644
+--- a/src/gtk-helpers/config_dialog.c
++++ b/src/gtk-helpers/config_dialog.c
+@@ -18,6 +18,7 @@
+ */
+
+ #include <gtk/gtk.h>
++#include <gdk/gdk.h>
+ #include "internal_libreport_gtk.h"
+
+ enum
+@@ -206,6 +207,40 @@ static gboolean config_filter_func(GtkTreeModel *model,
+ return visible;
+ }
+
++static void open_config_for_selected_row(GtkTreeView *tv)
++{
++ config_dialog_t *cdialog = (config_dialog_t *)get_column_value_from_row(tv, CONFIG_DIALOG, TYPE_POINTER);
++ const char *name = (const char *)get_column_value_from_row(tv, COLUMN_NAME, TYPE_STR);
++
++ cdialog_run(cdialog, name);
++}
++
++static gboolean on_key_press_event_cb(GtkWidget *btn, GdkEvent *event, gpointer user_data)
++{
++ GdkEventKey *ek = (GdkEventKey *)event;
++
++ if (ek->keyval == GDK_KEY_Return)
++ {
++ GtkTreeView *tv = (GtkTreeView *)user_data;
++ open_config_for_selected_row(tv);
++ }
++
++ return FALSE;
++}
++
++static gboolean on_button_press_event_cb(GtkWidget *btn, GdkEvent *event, gpointer user_data)
++{
++ GdkEventButton *eb = (GdkEventButton *)event;
++
++ if (eb->type == GDK_2BUTTON_PRESS)
++ {
++ GtkTreeView *tv = (GtkTreeView *)user_data;
++ open_config_for_selected_row(tv);
++ }
++
++ return FALSE;
++}
++
+ GtkWidget *create_config_tab_content(const char *column_label,
+ GtkListStore *store)
+ {
+@@ -216,6 +251,9 @@ GtkWidget *create_config_tab_content(const char *column_label,
+ GTK_POLICY_AUTOMATIC);
+ /* workflow list treeview */
+ GtkWidget *tv = gtk_tree_view_new();
++ g_signal_connect(tv, "key-press-event", G_CALLBACK(on_key_press_event_cb), tv);
++ g_signal_connect(tv, "button-press-event", G_CALLBACK(on_button_press_event_cb), tv);
++
+ /* column with workflow name and description */
+ GtkCellRenderer *renderer;
+ GtkTreeViewColumn *column;
+@@ -272,11 +310,8 @@ static void on_configure_cb(GtkWidget *btn, gpointer user_data)
+ GtkWidget *vbox = gtk_notebook_get_nth_page(nb, current_page_n);
+ GList *children = gtk_container_get_children(GTK_CONTAINER(vbox));
+ GtkScrolledWindow *sw = (GtkScrolledWindow *)children->data;
+- GtkTreeView *tv = (GtkTreeView *)gtk_bin_get_child(GTK_BIN(sw));
+- config_dialog_t *cdialog = (config_dialog_t *)get_column_value_from_row(tv, CONFIG_DIALOG, TYPE_POINTER);
+- const char *name = (const char *)get_column_value_from_row(tv, COLUMN_NAME, TYPE_STR);
+
+- cdialog_run(cdialog, name);
++ open_config_for_selected_row((GtkTreeView *)gtk_bin_get_child(GTK_BIN(sw)));
+ }
+
+ static void on_close_cb(GtkWidget *btn, gpointer config_list_w)
+--
+1.9.3
+
diff --git a/0007-gui-apply-configuration-dialogues-changes-on-Enter-k.patch b/0007-gui-apply-configuration-dialogues-changes-on-Enter-k.patch
new file mode 100644
index 0000000..15182ed
--- /dev/null
+++ b/0007-gui-apply-configuration-dialogues-changes-on-Enter-k.patch
@@ -0,0 +1,50 @@
+From ebfe7e07c42b0052ecd27c1889f3a0a29976ec63 Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Fri, 18 Jul 2014 12:20:06 +0200
+Subject: [PATCH 7/8] gui: apply configuration dialogues changes on Enter key
+
+Related to rhbz#1067123
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/gtk-helpers/event_config_dialog.c | 3 +++
+ src/gtk-helpers/workflow_config_dialog.c | 2 ++
+ 2 files changed, 5 insertions(+)
+
+diff --git a/src/gtk-helpers/event_config_dialog.c b/src/gtk-helpers/event_config_dialog.c
+index cfd7433..3cc111c 100644
+--- a/src/gtk-helpers/event_config_dialog.c
++++ b/src/gtk-helpers/event_config_dialog.c
+@@ -122,6 +122,7 @@ static void add_option_to_table(gpointer data, gpointer user_data)
+ /*left,top:*/ 0, last_row,
+ /*width,height:*/ 1, 1);
+ option_input = gtk_entry_new();
++ gtk_entry_set_activates_default(GTK_ENTRY(option_input), TRUE);
+ gtk_widget_set_hexpand(option_input, TRUE);
+ if (option->eo_value != NULL)
+ gtk_entry_set_text(GTK_ENTRY(option_input), option->eo_value);
+@@ -331,6 +332,8 @@ config_dialog_t *create_event_config_dialog(const char *event_name, GtkWindow *p
+
+ free(window_title);
+
++ gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_APPLY);
++
+ /* Allow resize?
+ * W/o resize, e.g. upload configuration hint looks awfully
+ * line wrapped.
+diff --git a/src/gtk-helpers/workflow_config_dialog.c b/src/gtk-helpers/workflow_config_dialog.c
+index 6c4d77c..d55f2f0 100644
+--- a/src/gtk-helpers/workflow_config_dialog.c
++++ b/src/gtk-helpers/workflow_config_dialog.c
+@@ -94,6 +94,8 @@ config_dialog_t *create_workflow_config_dialog(const char *workflow_name, GtkWin
+
+ free(window_title);
+
++ gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_APPLY);
++
+ gtk_window_set_resizable(GTK_WINDOW(dialog), true);
+ gtk_window_set_default_size(GTK_WINDOW(dialog), 450, 450);
+
+--
+1.9.3
+
diff --git a/0008-gui-close-ask-dialogues-on-Enter-key.patch b/0008-gui-close-ask-dialogues-on-Enter-key.patch
new file mode 100644
index 0000000..8f12dc8
--- /dev/null
+++ b/0008-gui-close-ask-dialogues-on-Enter-key.patch
@@ -0,0 +1,73 @@
+From 74cff8bbb789e388ff74510e1be12e3a6958a923 Mon Sep 17 00:00:00 2001
+From: Jakub Filak <jfilak at redhat.com>
+Date: Fri, 18 Jul 2014 13:44:53 +0200
+Subject: [PATCH 8/8] gui: close ask dialogues on Enter key
+
+Related to rhbz#1067123
+
+Signed-off-by: Jakub Filak <jfilak at redhat.com>
+---
+ src/gtk-helpers/ask_dialogs.c | 7 ++++++-
+ src/gui-wizard-gtk/wizard.c | 6 ++++++
+ 2 files changed, 12 insertions(+), 1 deletion(-)
+
+diff --git a/src/gtk-helpers/ask_dialogs.c b/src/gtk-helpers/ask_dialogs.c
+index d188dc5..81beea4 100644
+--- a/src/gtk-helpers/ask_dialogs.c
++++ b/src/gtk-helpers/ask_dialogs.c
+@@ -81,8 +81,11 @@ static int run_ask_yes_no_save_generic_result_dialog(ask_yes_no_dialog_flags fla
+ /* let's try to use the text as markup
+ * this allows us to use hyperlinks to man pages */
+ gtk_message_dialog_set_markup(GTK_MESSAGE_DIALOG(dialog), message);
+- gtk_dialog_add_button(GTK_DIALOG(dialog), _("_Yes"), GTK_RESPONSE_YES);
++ /* Follow GTK3's yes-no-buttons order:
++ * [No] [Yes]
++ */
+ GtkWidget *no_button = gtk_dialog_add_button(GTK_DIALOG(dialog), _("_No"), GTK_RESPONSE_NO);
++ gtk_dialog_add_button(GTK_DIALOG(dialog), _("_Yes"), GTK_RESPONSE_YES);
+
+ gint response = GTK_RESPONSE_NO;
+ g_signal_connect(G_OBJECT(dialog), "response",
+@@ -101,6 +104,8 @@ static int run_ask_yes_no_save_generic_result_dialog(ask_yes_no_dialog_flags fla
+ G_CALLBACK(on_toggle_ask_yes_no_yesforever_cb), (gpointer)no_button);
+ }
+
++ /* Esc -> No, Enter -> Yes */
++ gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_YES);
+ gtk_widget_show(ask_yes_no_cb);
+ gtk_dialog_run(GTK_DIALOG(dialog));
+
+diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c
+index 16b06db..0fde0f4 100644
+--- a/src/gui-wizard-gtk/wizard.c
++++ b/src/gui-wizard-gtk/wizard.c
+@@ -1584,6 +1584,7 @@ static char *ask_helper(const char *msg, void *args, bool password)
+ GTK_BUTTONS_OK_CANCEL,
+ "%s", msg);
+ char *tagged_msg = tag_url(msg, "\n");
++ gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK);
+ gtk_message_dialog_set_markup(GTK_MESSAGE_DIALOG(dialog), tagged_msg);
+ free(tagged_msg);
+
+@@ -1636,6 +1637,8 @@ static int run_event_gtk_ask_yes_no(const char *msg, void *args)
+ gtk_message_dialog_set_markup(GTK_MESSAGE_DIALOG(dialog), tagged_msg);
+ free(tagged_msg);
+
++ /* Esc -> No, Enter -> Yes */
++ gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_YES);
+ const int ret = gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_YES;
+
+ gtk_widget_destroy(dialog);
+@@ -1892,6 +1895,9 @@ static int ask_replace_old_private_group_name(void)
+ free(message);
+ free(markup_message);
+
++ /* Esc -> No, Enter -> Yes */
++ gtk_dialog_set_default_response(GTK_DIALOG(old_private_group), GTK_RESPONSE_YES);
++
+ gint result = gtk_dialog_run(GTK_DIALOG(old_private_group));
+ gtk_widget_destroy(old_private_group);
+
+--
+1.9.3
+
diff --git a/libreport.spec b/libreport.spec
index 01153b0..e5cce83 100644
--- a/libreport.spec
+++ b/libreport.spec
@@ -7,13 +7,24 @@
Summary: Generic library for reporting various problems
Name: libreport
Version: 2.2.3
-Release: 1%{?dist}
+Release: 2%{?dist}
License: GPLv2+
Group: System Environment/Libraries
URL: https://fedorahosted.org/abrt/
Source: https://fedorahosted.org/released/abrt/%{name}-%{version}.tar.gz
Source1: autogen.sh
+Patch1: 0001-ureport-implement-attaching-of-user-comments.patch
+Patch2: 0002-gui-make-preferences-dialogue-modal-for-parents.patch
+Patch3: 0003-gui-select-the-first-in-the-configuration-list.patch
+Patch4: 0004-gui-wrap-lines-for-human-readable-files.patch
+Patch5: 0005-wizard-fix-help-text-for-screencasting.patch
+Patch6: 0006-gui-support-Enter-2Click-in-Preferences-list.patch
+Patch7: 0007-gui-apply-configuration-dialogues-changes-on-Enter-k.patch
+Patch8: 0008-gui-close-ask-dialogues-on-Enter-key.patch
+Patch9: 0001-json-include-json.h-accordingly-to-json-c-CFLAGS.patch
+Patch10: 0001-ureport-include-json.h-accordingly-to-json-c-CFLAGS.patch
+
# git is need for '%%autosetup -S git' which automatically applies all the
# patches above. Please, be aware that the patches must be generated
# by 'git format-patch'
@@ -651,6 +662,15 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%changelog
+* Fri Jul 25 2014 Jakub Filak <jfilak at redhat.com> 2.2.3-2
+- reporter-ureport: attach anonymous comment
+- gui: close dialogues on Enter key
+- gui: support Enter & 2Click in Preferences list
+- gui: fix help text for screencasting
+- gui: wrap lines for human readable files on Data review page
+- gui: select the first item in the configuration list
+- gui: make the preferences dialogue modal for parents
+
* Tue Jul 08 2014 Jakub Filak <jfilak at redhat.com> 2.2.3-1
- wizard: Do not highlight sensitive words in user's comment
- bugzilla: show description for all configuration options
More information about the scm-commits
mailing list