summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sc/source/ui/docshell/datastream.cxx13
1 files changed, 11 insertions, 2 deletions
diff --git a/sc/source/ui/docshell/datastream.cxx b/sc/source/ui/docshell/datastream.cxx
index 8f78c9c7386a..c7f52e5e16fc 100644
--- a/sc/source/ui/docshell/datastream.cxx
+++ b/sc/source/ui/docshell/datastream.cxx
@@ -65,11 +65,15 @@ private:
{
while (!mbTerminate)
{
+ // wait for a small amount of time, so that
+ // painting methods have a chance to be called.
+ // And also to make UI more responsive.
+ TimeValue const aTime = {0, 1000};
maStart.wait();
maStart.reset();
if (!mbTerminate)
while (mpDataStream->ImportData())
- ;
+ wait(aTime);
};
}
};
@@ -347,8 +351,9 @@ void DataStream::SetRefreshOnEmptyLine( bool bVal )
void DataStream::Refresh()
{
- // Hard recalc will repaint the grid area.
Application::Yield();
+
+ // Hard recalc will repaint the grid area.
mpDocShell->DoHardRecalc(true);
mpDocShell->SetDocumentModified(true);
@@ -509,10 +514,14 @@ void DataStream::Text2Doc() {}
bool DataStream::ImportData()
{
+ SolarMutexGuard aGuard;
if (!mbValuesInLine)
// We no longer support this mode. To be deleted later.
return false;
+ if (ScDocShell::GetViewData()->GetViewShell()->NeedsRepaint())
+ return mbRunning;
+
Text2Doc();
return mbRunning;
}