diff options
| author | John Bintz <me@johnbintz.com> | 2006-08-13 18:45:40 +0000 |
|---|---|---|
| committer | johncoswell <johncoswell@users.sourceforge.net> | 2006-08-13 18:45:40 +0000 |
| commit | e945f1a347023c8cc50165ed97a2295b85a3e75a (patch) | |
| tree | 9255eb62c79f091fbbd18426b6592c035b933ebf /src/widgets | |
| parent | added functions to allow update events to process during long-running operations (diff) | |
| download | inkscape-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.cpp | 26 | ||||
| -rw-r--r-- | src/widgets/desktop-widget.h | 9 |
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); }; |
