projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge commit 'origin/stable'
[pspp]
/
src
/
ui
/
gui
/
message-dialog.c
diff --git
a/src/ui/gui/message-dialog.c
b/src/ui/gui/message-dialog.c
index 75f8cfdcbcf74de07fa2228ccc588b2b69747a9f..7513295323988677b38c26807cff73b96d10b04a 100644
(file)
--- a/
src/ui/gui/message-dialog.c
+++ b/
src/ui/gui/message-dialog.c
@@
-24,13
+24,13
@@
#define N_(msgid) msgid
#include <libpspp/message.h>
#define N_(msgid) msgid
#include <libpspp/message.h>
+#include <libpspp/str.h>
#include <libpspp/msg-locator.h>
#include "message-dialog.h"
#include "progname.h"
#include <gtk/gtk.h>
#include <libpspp/msg-locator.h>
#include "message-dialog.h"
#include "progname.h"
#include <gtk/gtk.h>
-#include <glade/glade.h>
#include <glib.h>
#include "helper.h"
#include <glib.h>
#include "helper.h"
@@
-48,8
+48,8
@@
static GQueue *late_queue;
static int error_cnt, warning_cnt, note_cnt;
static int error_cnt, warning_cnt, note_cnt;
-static G
ladeXML
*message_xml;
-static Gtk
Dialog
*message_dialog;
+static G
tkBuilder
*message_xml;
+static Gtk
Widget
*message_dialog;
void
message_dialog_init (struct source_stream *ss)
void
message_dialog_init (struct source_stream *ss)
@@
-59,9
+59,12
@@
message_dialog_init (struct source_stream *ss)
late_queue = g_queue_new ();
error_cnt = warning_cnt = note_cnt = 0;
msg_init (ss, enqueue_msg);
late_queue = g_queue_new ();
error_cnt = warning_cnt = note_cnt = 0;
msg_init (ss, enqueue_msg);
- message_xml = XML_NEW ("message-dialog.glade");
- message_dialog = GTK_DIALOG (get_widget_assert (message_xml,
- "message-dialog"));
+ message_xml = builder_new ("message-dialog.ui");
+ message_dialog = get_widget_assert (message_xml, "message-dialog");
+
+ GTK_WIDGET_SET_FLAGS (get_widget_assert (message_xml, "close-button"),
+ GTK_CAN_DEFAULT);
+
}
void
}
void
@@
-71,7
+74,7
@@
message_dialog_done (void)
g_queue_free (early_queue);
dropped_messages = 0;
g_queue_free (late_queue);
g_queue_free (early_queue);
dropped_messages = 0;
g_queue_free (late_queue);
- gtk_widget_destroy (
GTK_WIDGET (message_dialog)
);
+ gtk_widget_destroy (
message_dialog
);
g_object_unref (message_xml);
}
g_object_unref (message_xml);
}
@@
-182,7
+185,7
@@
enqueue_msg (const struct msg *msg)
}
}
}
}
-gboolean
+
static
gboolean
popup_messages (gpointer unused UNUSED)
{
GtkTextBuffer *text_buffer;
popup_messages (gpointer unused UNUSED)
{
GtkTextBuffer *text_buffer;
@@
-193,12
+196,23
@@
popup_messages (gpointer unused UNUSED)
struct string msg = DS_EMPTY_INITIALIZER;
int message_cnt;
struct string msg = DS_EMPTY_INITIALIZER;
int message_cnt;
+ gdk_threads_enter ();
+
+ /* Set up the dialog. */
+ if (message_xml == NULL || message_dialog == NULL)
+ goto use_fallback;
+
/* If a pointer grab is in effect, then the combination of that, and
a modal dialog box, will cause an impossible situation.
So don't pop it up just yet.
*/
/* If a pointer grab is in effect, then the combination of that, and
a modal dialog box, will cause an impossible situation.
So don't pop it up just yet.
*/
- if ( gdk_pointer_is_grabbed ())
- return TRUE;
+ if ( gdk_display_pointer_is_grabbed (gtk_widget_get_display (message_dialog)))
+ {
+ ds_destroy (&lead);
+ ds_destroy (&msg);
+ gdk_threads_leave ();
+ return TRUE;
+ }
/* Compose the lead-in. */
message_cnt = error_cnt + warning_cnt + note_cnt;
/* Compose the lead-in. */
message_cnt = error_cnt + warning_cnt + note_cnt;
@@
-238,10
+252,6
@@
popup_messages (gpointer unused UNUSED)
while (!g_queue_is_empty (late_queue))
format_message (g_queue_pop_head (late_queue), &msg);
while (!g_queue_is_empty (late_queue))
format_message (g_queue_pop_head (late_queue), &msg);
- /* Set up the dialog. */
- if (message_xml == NULL || message_dialog == NULL)
- goto use_fallback;
-
text_buffer = gtk_text_buffer_new (NULL);
gtk_text_buffer_get_end_iter (text_buffer, &end);
gtk_text_buffer_insert (text_buffer, &end, ds_data (&msg), ds_length (&msg));
text_buffer = gtk_text_buffer_new (NULL);
gtk_text_buffer_get_end_iter (text_buffer, &end);
gtk_text_buffer_insert (text_buffer, &end, ds_data (&msg), ds_length (&msg));
@@
-256,12
+266,15
@@
popup_messages (gpointer unused UNUSED)
goto use_fallback;
gtk_text_view_set_buffer (text_view, text_buffer);
goto use_fallback;
gtk_text_view_set_buffer (text_view, text_buffer);
- gtk_dialog_run (message_dialog);
- gtk_widget_hide (GTK_WIDGET (message_dialog));
+ gtk_widget_grab_default (get_widget_assert (message_xml, "close-button"));
+ gtk_widget_grab_focus (get_widget_assert (message_xml, "close-button"));
+ gtk_dialog_run ( GTK_DIALOG (message_dialog));
+ gtk_widget_hide (message_dialog);
ds_destroy (&lead);
ds_destroy (&msg);
ds_destroy (&lead);
ds_destroy (&msg);
+ gdk_threads_leave ();
return FALSE;
use_fallback:
return FALSE;
use_fallback:
@@
-270,6
+283,7
@@
use_fallback:
fputs (ds_cstr (&msg), stderr);
ds_destroy (&lead);
ds_destroy (&msg);
fputs (ds_cstr (&msg), stderr);
ds_destroy (&lead);
ds_destroy (&msg);
+ gdk_threads_leave ();
return FALSE;
}
return FALSE;
}