summaryrefslogtreecommitdiffstats
path: root/src/widgets
diff options
context:
space:
mode:
authorJohn Bintz <me@johnbintz.com>2006-08-13 18:45:40 +0000
committerjohncoswell <johncoswell@users.sourceforge.net>2006-08-13 18:45:40 +0000
commite945f1a347023c8cc50165ed97a2295b85a3e75a (patch)
tree9255eb62c79f091fbbd18426b6592c035b933ebf /src/widgets
parentadded functions to allow update events to process during long-running operations (diff)
downloadinkscape-e945f1a347023c8cc50165ed97a2295b85a3e75a.tar.gz
inkscape-e945f1a347023c8cc50165ed97a2295b85a3e75a.zip
add interface for disabling interaction during long-running operations
(bzr r1596)
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/desktop-widget.cpp26
-rw-r--r--src/widgets/desktop-widget.h9
2 files changed, 35 insertions, 0 deletions
diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp
index 795fdb0f8..9ede6f27e 100644
--- a/src/widgets/desktop-widget.cpp
+++ b/src/widgets/desktop-widget.cpp
@@ -8,7 +8,9 @@
* MenTaLguY <mental@rydia.net>
* bulia byak <buliabyak@users.sf.net>
* Ralf Stephan <ralf@ark.in-berlin.de>
+ * John Bintz <jcoswell@coswellproductions.org>
*
+ * Copyright (C) 2006 John Bintz
* Copyright (C) 2004 MenTaLguY
* Copyright (C) 1999-2002 Lauris Kaplinski
* Copyright (C) 2000-2001 Ximian, Inc.
@@ -171,6 +173,8 @@ sp_desktop_widget_init (SPDesktopWidget *dtw)
dtw->desktop = NULL;
+ dtw->_interaction_disabled_counter = 0;
+
dtw->tt = gtk_tooltips_new ();
/* Main table */
@@ -669,6 +673,28 @@ SPDesktopWidget::requestCanvasUpdateAndWait() {
}
+void
+SPDesktopWidget::enableInteraction()
+{
+ g_return_if_fail(_interaction_disabled_counter > 0);
+
+ _interaction_disabled_counter--;
+
+ if (_interaction_disabled_counter == 0) {
+ gtk_widget_set_sensitive(GTK_WIDGET(this), TRUE);
+ }
+}
+
+void
+SPDesktopWidget::disableInteraction()
+{
+ if (_interaction_disabled_counter == 0) {
+ gtk_widget_set_sensitive(GTK_WIDGET(this), FALSE);
+ }
+
+ _interaction_disabled_counter++;
+}
+
void
SPDesktopWidget::setCoordinateStatus(NR::Point p)
{
diff --git a/src/widgets/desktop-widget.h b/src/widgets/desktop-widget.h
index 409f38a8d..0514dd393 100644
--- a/src/widgets/desktop-widget.h
+++ b/src/widgets/desktop-widget.h
@@ -5,6 +5,7 @@
* SPDesktopWidget: handling Gtk events on a desktop.
*
* Authors:
+ * John Bintz <jcoswell@coswellproductions.org> (c) 2006
* Ralf Stephan <ralf@ark.in-berlin.de> (c) 2005, distrib. under GPL2
* ? -2004
*/
@@ -92,6 +93,8 @@ struct SPDesktopWidget {
Inkscape::UI::Widget::SelectedStyle *selected_style;
gint coord_status_id, select_status_id;
+
+ unsigned int _interaction_disabled_counter;
SPCanvas *canvas;
NR::Point ruler_origin;
@@ -135,6 +138,10 @@ struct SPDesktopWidget {
{ _dtw->requestCanvasUpdate(); }
virtual void requestCanvasUpdateAndWait()
{ _dtw->requestCanvasUpdateAndWait(); }
+ virtual void enableInteraction()
+ { _dtw->enableInteraction(); }
+ virtual void disableInteraction()
+ { _dtw->disableInteraction(); }
virtual void activateDesktop()
{ sp_dtw_desktop_activate (_dtw); }
virtual void deactivateDesktop()
@@ -186,6 +193,8 @@ struct SPDesktopWidget {
void setCoordinateStatus(NR::Point p);
void requestCanvasUpdate();
void requestCanvasUpdateAndWait();
+ void enableInteraction();
+ void disableInteraction();
void updateTitle(gchar const *uri);
};