summaryrefslogtreecommitdiffstats
path: root/src/ui
diff options
context:
space:
mode:
authorJohn Bintz <me@johnbintz.com>2006-08-13 17:45:18 +0000
committerjohncoswell <johncoswell@users.sourceforge.net>2006-08-13 17:45:18 +0000
commitaddfca5cf637c0fe78d5bdeb2cb122f1f77131f8 (patch)
tree88d085d9e6083b9f07ca5d2a0230948e49ab8955 /src/ui
parentFixed: Wrong colour space was used in images with transparency. (diff)
downloadinkscape-addfca5cf637c0fe78d5bdeb2cb122f1f77131f8.tar.gz
inkscape-addfca5cf637c0fe78d5bdeb2cb122f1f77131f8.zip
added functions to allow update events to process during long-running operations
(bzr r1595)
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/view/edit-widget-interface.h3
-rw-r--r--src/ui/view/edit-widget.cpp9
-rw-r--r--src/ui/view/edit-widget.h1
3 files changed, 13 insertions, 0 deletions
diff --git a/src/ui/view/edit-widget-interface.h b/src/ui/view/edit-widget-interface.h
index 689eff4a7..605c72b59 100644
--- a/src/ui/view/edit-widget-interface.h
+++ b/src/ui/view/edit-widget-interface.h
@@ -70,6 +70,9 @@ struct EditWidgetInterface
/// Queue a redraw request with the canvas
virtual void requestCanvasUpdate() = 0;
+ /// Force a redraw of the canvas
+ virtual void requestCanvasUpdateAndWait() = 0;
+
/// Update the "active desktop" indicator
virtual void activateDesktop() = 0;
diff --git a/src/ui/view/edit-widget.cpp b/src/ui/view/edit-widget.cpp
index 626c30941..6a4306147 100644
--- a/src/ui/view/edit-widget.cpp
+++ b/src/ui/view/edit-widget.cpp
@@ -1294,6 +1294,15 @@ EditWidget::requestCanvasUpdate()
}
void
+EditWidget::requestCanvasUpdateAndWait()
+{
+ requestCanvasUpdate();
+
+ while (gtk_events_pending())
+ gtk_main_iteration_do(FALSE);
+}
+
+void
EditWidget::activateDesktop()
{
/// \todo active_desktop_indicator not implemented
diff --git a/src/ui/view/edit-widget.h b/src/ui/view/edit-widget.h
index 0beb77b53..096137c2a 100644
--- a/src/ui/view/edit-widget.h
+++ b/src/ui/view/edit-widget.h
@@ -108,6 +108,7 @@ public:
virtual bool shutdown();
virtual void destroy();
virtual void requestCanvasUpdate();
+ virtual void requestCanvasUpdateAndWait();
virtual void activateDesktop();
virtual void deactivateDesktop();
virtual void viewSetPosition (NR::Point p);