From addfca5cf637c0fe78d5bdeb2cb122f1f77131f8 Mon Sep 17 00:00:00 2001 From: John Bintz Date: Sun, 13 Aug 2006 17:45:18 +0000 Subject: added functions to allow update events to process during long-running operations (bzr r1595) --- src/ui/view/edit-widget-interface.h | 3 +++ src/ui/view/edit-widget.cpp | 9 +++++++++ src/ui/view/edit-widget.h | 1 + 3 files changed, 13 insertions(+) (limited to 'src/ui/view') 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 @@ -1293,6 +1293,15 @@ EditWidget::requestCanvasUpdate() _svg_canvas.widget().queue_draw(); } +void +EditWidget::requestCanvasUpdateAndWait() +{ + requestCanvasUpdate(); + + while (gtk_events_pending()) + gtk_main_iteration_do(FALSE); +} + void EditWidget::activateDesktop() { 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); -- cgit v1.2.3