Code

add new message type for urgent immediate statusbar display
authorbuliabyak <buliabyak@users.sourceforge.net>
Wed, 17 Jan 2007 22:53:02 +0000 (22:53 +0000)
committerbuliabyak <buliabyak@users.sourceforge.net>
Wed, 17 Jan 2007 22:53:02 +0000 (22:53 +0000)
src/message-stack.cpp
src/message.h
src/widgets/desktop-widget.cpp

index ae65e3421ed7490bd727b983c9ffbfc89968c861..877d8edeb0e331aef1b657e993924ec07b75c617 100644 (file)
@@ -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);
index 24a61fea7e74e5e51eb74b90e097dfcbb07b7c48..b9b38b61380641ae6d1231564be017d0db28947d 100644 (file)
@@ -21,6 +21,7 @@ namespace Inkscape {
  */
 enum MessageType {
     NORMAL_MESSAGE,
+    IMMEDIATE_MESSAGE,
     WARNING_MESSAGE,
     ERROR_MESSAGE,
     INFORMATION_MESSAGE
index f91fc3b81b47e71ea98068bd5b21fd2178b1923e..d7e5891c61cb7bb5e6cf7214c9545c8ce485faa4 100644 (file)
@@ -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);
 }