[Xfce4-commits] <midori:master> Implement 'Run in debugger' button in diagnostic dialog
Christian Dywan
noreply at xfce.org
Wed Mar 27 00:52:01 CET 2013
Updating branch refs/heads/master
to d31e4830493cc16b3763438bc6de68ca5eabb17e (commit)
from 78cc6cc295143821ae1229ddd1b691ae00c4f78b (commit)
commit d31e4830493cc16b3763438bc6de68ca5eabb17e
Author: Christian Dywan <christian at twotoasts.de>
Date: Wed Mar 27 00:50:19 2013 +0100
Implement 'Run in debugger' button in diagnostic dialog
katze/midori-paths.vala | 3 ++-
midori/main.c | 11 +----------
midori/midori-frontend.c | 29 ++++++++++++++++++++++++++++-
midori/sokoke.c | 16 ++++++++++++++++
midori/sokoke.h | 4 ++++
5 files changed, 51 insertions(+), 12 deletions(-)
diff --git a/katze/midori-paths.vala b/katze/midori-paths.vala
index d404a5f..6f5cd45 100644
--- a/katze/midori-paths.vala
+++ b/katze/midori-paths.vala
@@ -313,7 +313,8 @@ namespace Midori {
assert (command_line != null);
if (for_display)
return string.joinv (" ", command_line).replace (Environment.get_home_dir (), "~");
- return string.joinv (" ", command_line).replace ("--debug", "").replace ("-g", "");
+ return string.joinv (" ", command_line).replace ("--debug", "").replace ("-g", "")
+ .replace ("--diagnostic-dialog", "").replace ("-d", "");
}
public static string get_lib_path (string package) {
diff --git a/midori/main.c b/midori/main.c
index a24a025..4dcfcab 100644
--- a/midori/main.c
+++ b/midori/main.c
@@ -143,19 +143,10 @@ main (int argc,
if (debug)
{
gchar* gdb = g_find_program_in_path ("gdb");
- gchar* args = midori_paths_get_command_line_str (FALSE);
- const gchar* runtime_dir = midori_paths_get_runtime_dir ();
- gchar* cmd = g_strdup_printf (
- "--batch -ex 'set print thread-events off' -ex run "
- "-ex 'set logging on %s/%s' -ex 'bt' --return-child-result "
- "--args %s",
- runtime_dir, "gdb.bt", args);
if (gdb == NULL)
midori_error (_("Error: \"gdb\" can't be found\n"));
- sokoke_spawn_program (gdb, TRUE, cmd, FALSE, TRUE);
+ sokoke_spawn_gdb (gdb, TRUE);
g_free (gdb);
- g_free (cmd);
- g_free (args);
return 0;
}
diff --git a/midori/midori-frontend.c b/midori/midori-frontend.c
index af28e4a..d8198c8 100644
--- a/midori/midori-frontend.c
+++ b/midori/midori-frontend.c
@@ -304,7 +304,19 @@ midori_frontend_crash_log_cb (GtkWidget* button,
{
GError* error = NULL;
if (!sokoke_show_uri (gtk_widget_get_screen (button), crash_log, 0, &error))
- midori_error (error->message);
+ {
+ sokoke_message_dialog (GTK_MESSAGE_ERROR,
+ _("Could not run external program."),
+ error->message, FALSE);
+ g_error_free (error);
+ }
+}
+
+static void
+midori_frontend_debugger_cb (GtkWidget* button,
+ GtkDialog* dialog)
+{
+ gtk_dialog_response (dialog, GTK_RESPONSE_HELP);
}
static MidoriStartup
@@ -367,6 +379,16 @@ midori_frontend_diagnostic_dialog (MidoriApp* app,
}
else
g_free (crash_log);
+
+ gchar* gdb = g_find_program_in_path ("gdb");
+ if (gdb != NULL)
+ {
+ GtkWidget* button = gtk_button_new_with_mnemonic (_("Run in _debugger"));
+ g_signal_connect (button, "clicked",
+ G_CALLBACK (midori_frontend_debugger_cb), dialog);
+ gtk_widget_show (button);
+ gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 4);
+ }
gtk_dialog_set_default_response (GTK_DIALOG (dialog),
load_on_startup == MIDORI_STARTUP_HOMEPAGE
? MIDORI_STARTUP_BLANK_PAGE : load_on_startup);
@@ -390,6 +412,11 @@ midori_frontend_diagnostic_dialog (MidoriApp* app,
gtk_widget_destroy (dialog);
if (response == GTK_RESPONSE_DELETE_EVENT)
response = G_MAXINT;
+ else if (response == GTK_RESPONSE_HELP)
+ {
+ sokoke_spawn_gdb (gdb, FALSE);
+ response = G_MAXINT;
+ }
else if (response == MIDORI_STARTUP_BLANK_PAGE)
katze_array_clear (session);
return response;
diff --git a/midori/sokoke.c b/midori/sokoke.c
index 66636ba..bcc3c24 100644
--- a/midori/sokoke.c
+++ b/midori/sokoke.c
@@ -395,6 +395,22 @@ sokoke_spawn_program (const gchar* command,
}
void
+sokoke_spawn_gdb (const gchar* gdb,
+ gboolean sync)
+{
+ gchar* args = midori_paths_get_command_line_str (FALSE);
+ const gchar* runtime_dir = midori_paths_get_runtime_dir ();
+ gchar* cmd = g_strdup_printf (
+ "--batch -ex 'set print thread-events off' -ex run "
+ "-ex 'set logging on %s/%s' -ex 'bt' --return-child-result "
+ "--args %s",
+ runtime_dir, "gdb.bt", args);
+ sokoke_spawn_program (gdb, TRUE, cmd, FALSE, sync);
+ g_free (cmd);
+ g_free (args);
+}
+
+void
sokoke_spawn_app (const gchar* uri,
gboolean private)
{
diff --git a/midori/sokoke.h b/midori/sokoke.h
index 7074b96..b7acae4 100644
--- a/midori/sokoke.h
+++ b/midori/sokoke.h
@@ -56,6 +56,10 @@ sokoke_spawn_program (const gchar* command,
gboolean sync);
void
+sokoke_spawn_gdb (const gchar* gdb,
+ gboolean sync);
+
+void
sokoke_spawn_app (const gchar* uri,
gboolean inherit_config);
More information about the Xfce4-commits
mailing list