summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorbulia byak <buliabyak@gmail.com>2007-01-17 22:53:02 +0000
committerbuliabyak <buliabyak@users.sourceforge.net>2007-01-17 22:53:02 +0000
commitad71869e3eca4f49ec294363a1adc24b6473f8f2 (patch)
tree2f974cd2bbea9854e82d091eeb0668adbdbd3d2d /src
parentsafety check (diff)
downloadinkscape-ad71869e3eca4f49ec294363a1adc24b6473f8f2.tar.gz
inkscape-ad71869e3eca4f49ec294363a1adc24b6473f8f2.zip
add new message type for urgent immediate statusbar display
(bzr r2232)
Diffstat (limited to 'src')
-rw-r--r--src/message-stack.cpp3
-rw-r--r--src/message.h1
-rw-r--r--src/widgets/desktop-widget.cpp7
3 files changed, 11 insertions, 0 deletions
diff --git a/src/message-stack.cpp b/src/message-stack.cpp
index ae65e3421..877d8edeb 100644
--- a/src/message-stack.cpp
+++ b/src/message-stack.cpp
@@ -70,6 +70,9 @@ MessageId MessageStack::flash(MessageType type, gchar const *message) {
case WARNING_MESSAGE: // a bit less important than error
return _push(type, 2000 + 40*strlen(message), message);
break;
+ case IMMEDIATE_MESSAGE: // same length as normal, higher priority
+ return _push(type, 1000 + 20*strlen(message), message);
+ break;
case NORMAL_MESSAGE: // something ephemeral
default:
return _push(type, 1000 + 20*strlen(message), message);
diff --git a/src/message.h b/src/message.h
index 24a61fea7..b9b38b613 100644
--- a/src/message.h
+++ b/src/message.h
@@ -21,6 +21,7 @@ namespace Inkscape {
*/
enum MessageType {
NORMAL_MESSAGE,
+ IMMEDIATE_MESSAGE,
WARNING_MESSAGE,
ERROR_MESSAGE,
INFORMATION_MESSAGE
diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp
index f91fc3b81..d7e5891c6 100644
--- a/src/widgets/desktop-widget.cpp
+++ b/src/widgets/desktop-widget.cpp
@@ -105,6 +105,13 @@ SPDesktopWidget::setMessage (Inkscape::MessageType type, const gchar *message)
{
GtkLabel *sb=GTK_LABEL(this->select_status);
gtk_label_set_markup (sb, message ? message : "");
+
+ // make sure the important messages are displayed immediately!
+ if (type == Inkscape::IMMEDIATE_MESSAGE && GTK_WIDGET_DRAWABLE (GTK_WIDGET(sb))) {
+ gtk_widget_queue_draw(GTK_WIDGET(sb));
+ gdk_window_process_updates(GTK_WIDGET(sb)->window, TRUE);
+ }
+
// FIXME: TODO: remove <b></b> before displaying as tooltip
gtk_tooltips_set_tip (this->tt, this->select_status_eventbox, message ? message : "", NULL);
}