summaryrefslogtreecommitdiff
path: root/platform/winrt
diff options
context:
space:
mode:
authorMichael Vrhel <michael.vrhel@artifex.com>2014-02-13 17:19:46 -0800
committerMichael Vrhel <michael.vrhel@artifex.com>2014-09-09 16:39:31 -0700
commit2b5c4cc1929bf4a702e943d2d73802d3e0b0ec11 (patch)
tree2d5dab481a9295f8c4e26e700d7c5366399b4d3c /platform/winrt
parenta0146909e9a91ab0b375ace248868c1799404448 (diff)
downloadmupdf-2b5c4cc1929bf4a702e943d2d73802d3e0b0ec11.tar.xz
Add in the cancel for the thumb rendering.
Also clean up a few things that result in someone canceling the thumbs.
Diffstat (limited to 'platform/winrt')
-rw-r--r--platform/winrt/gsview/MainWindow.xaml.cs30
1 files changed, 23 insertions, 7 deletions
diff --git a/platform/winrt/gsview/MainWindow.xaml.cs b/platform/winrt/gsview/MainWindow.xaml.cs
index 9be2fcbb..03fae27d 100644
--- a/platform/winrt/gsview/MainWindow.xaml.cs
+++ b/platform/winrt/gsview/MainWindow.xaml.cs
@@ -145,6 +145,7 @@ namespace gsview
gsOutput m_gsoutput;
Convert m_convertwin;
bool m_zoomhandled;
+ BackgroundWorker m_thumbworker = null;
public MainWindow()
{
@@ -227,6 +228,7 @@ namespace gsview
m_doczoom = 1.0;
m_isXPS = false;
m_zoomhandled = false;
+ xaml_CancelThumb.IsEnabled = true;
return result;
}
@@ -337,6 +339,11 @@ namespace gsview
worker.ReportProgress((int)percent, curr_thumb);
}
}
+ if (worker.CancellationPending == true)
+ {
+ e.Cancel = true;
+ break;
+ }
}
}
@@ -346,6 +353,8 @@ namespace gsview
xaml_ThumbProgress.Value = 0;
xaml_ThumbList.ItemsSource = m_thumbnails;
m_have_thumbs = true;
+ m_thumbworker = null;
+ xaml_CancelThumb.IsEnabled = true;
}
private void ThumbsProgressChanged(object sender, ProgressChangedEventArgs e)
@@ -366,14 +375,14 @@ namespace gsview
run on the main thread */
try
{
- BackgroundWorker worker = new BackgroundWorker();
- worker.WorkerReportsProgress = true;
- worker.WorkerSupportsCancellation = true;
- worker.DoWork += new DoWorkEventHandler(ThumbsWork);
- worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(ThumbsCompleted);
- worker.ProgressChanged += new ProgressChangedEventHandler(ThumbsProgressChanged);
+ m_thumbworker = new BackgroundWorker();
+ m_thumbworker.WorkerReportsProgress = true;
+ m_thumbworker.WorkerSupportsCancellation = true;
+ m_thumbworker.DoWork += new DoWorkEventHandler(ThumbsWork);
+ m_thumbworker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(ThumbsCompleted);
+ m_thumbworker.ProgressChanged += new ProgressChangedEventHandler(ThumbsProgressChanged);
xaml_ProgressGrid.Visibility = System.Windows.Visibility.Visible;
- worker.RunWorkerAsync();
+ m_thumbworker.RunWorkerAsync();
}
catch (OutOfMemoryException e)
{
@@ -473,6 +482,7 @@ namespace gsview
for (int k = 0; k < m_num_pages; k++)
{
m_docPages.Add(InitDocPage());
+ m_docPages[k].PageNum = k;
m_thumbnails.Add(InitDocPage());
/* Create empty lists for our links and specify that they have
not been computed for these pages */
@@ -537,6 +547,8 @@ namespace gsview
{
/* Cancel during thumbnail loading. Deactivate the button
* and cancel the thumbnail rendering */
+ m_thumbworker.CancelAsync();
+ xaml_CancelThumb.IsEnabled = false;
}
private void ToggleThumbs(object sender, RoutedEventArgs e)
@@ -580,6 +592,8 @@ namespace gsview
var item = ((FrameworkElement)e.OriginalSource).DataContext as DocPage;
if (item != null)
{
+ if (item.PageNum < 0)
+ return;
m_currpage = item.PageNum;
xaml_PageList.ScrollIntoView(m_docPages[item.PageNum]);
}
@@ -900,6 +914,8 @@ namespace gsview
var item = ((FrameworkElement)e.OriginalSource).DataContext as DocPage;
if (item != null)
{
+ if (item.PageNum < 0)
+ return;
m_currpage = item.PageNum;
xaml_PageList.ScrollIntoView(m_docPages[item.PageNum]);
}