[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/work/kviewshell-0.7/kviewshell/shell
From:       Wilfried Huss <Wilfried.Huss () gmx ! at>
Date:       2006-10-17 20:36:49
Message-ID: 1161117409.326710.27352.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 596544 by whuss:

fix a recently introduced regression in the search function.

 M  +42 -18    pageView.cpp  
 M  +4 -0      pageView.h  


--- branches/work/kviewshell-0.7/kviewshell/shell/pageView.cpp #596543:596544
@@ -1011,13 +1011,21 @@
       if (numberOfWidgets() < pageNumber)
         kdError(kvs::shell) << "PageView::gotoSelection() while widgetList.size()=" \
<< numberOfWidgets() << "and selection.getPageNumber()=" << pageNumber << endl;  else
-        pageWidget(pageNumber - 1)->select(selection);
+      {
+        DocumentWidget* pageWidget = widgetOfPageNumber(pageNumber);
+        if (pageWidget)
+        {
+          pageWidget->select(selection);
+        }
+      }
   }
 
   unsigned int y = pageData->textBoxList[selection.getSelectedTextStart()].box.top();
  
   Length l;
-  l.setLength_in_mm(y);
+  l.setLength_in_pixel(y, dataModel->resolution());
+
+  // Make the selection visible in the page view
   dataModel->setCurrentPageNumber(Anchor(selection.getPageNumber(), l, false));
 }
 
@@ -1075,14 +1083,17 @@
     // Make the widget pageWidget visible in the scrollview. Somehow this
     // doesn't seem to trigger the signal contentsMoved in the
     // QScrollview, so that we better call setCurrentPage() ourselves.
-    _pageWidget = pageWidget(page % visiblePages);
+    _pageWidget = widgetOfPageNumber(page);
 
-    if (newTableu) {
-      // If we have switched to a new tableu, we don't want smooth scrolling
-      moveViewportToWidget(_pageWidget, y, false);
-    } else
-      moveViewportToWidget(_pageWidget, y);
-    return;
+    if (_pageWidget)
+    {
+      if (newTableu) {
+        // If we have switched to a new tableu, we don't want smooth scrolling
+        moveViewportToWidget(_pageWidget, y, false);
+      }
+      else
+        moveViewportToWidget(_pageWidget, y);
+    }
   } else if (numberOfWidgets() == 1) {
     // If the widget list contains only a single element, then either
     // the document contains only one page, or we are in "single page"
@@ -1110,7 +1121,7 @@
       kdError(kvs::shell) << "PageView::gotoAnchor() called with widgetList.size()=" \
<< numberOfWidgets() << ", and page=" << page << endl;  return;
     }
-    _pageWidget = pageWidget(page-1);
+    _pageWidget = widgetOfPageNumber(page);
     if (_pageWidget == 0) {
       kdError(kvs::shell) << "PageView::gotoAnchor() called with widgetList.size() > \
1, but widgetList[page] == 0" << endl;  return;
@@ -1296,15 +1307,13 @@
 
 void PageView::updatePage(const PageNumber& pageNumber)
 {
-  for (unsigned int i = 0; i < numberOfWidgets(); i++)
+  DocumentWidget* pageWidget = widgetOfPageNumber(pageNumber);
+  if (!pageWidget)
+    return;
+
+  if (isVisible(pageWidget))
   {
-    DocumentWidget* pageWidget = widgetList[i];
-    if (pageWidget->getPageNumber() == pageNumber)
-    {
-      if (isVisible(pageWidget))
-        pageWidget->update();
-      break;
-    }
+    pageWidget->update();
   }
 }
 
@@ -1398,6 +1407,21 @@
 }
 
 
+DocumentWidget* PageView::widgetOfPageNumber(const PageNumber& pageNumber)
+{
+  for (unsigned int i = 0; i < numberOfWidgets(); i++)
+  {
+    DocumentWidget* pageWidget = widgetList[i];
+    if (pageWidget->getPageNumber() == pageNumber)
+    {
+      return pageWidget;
+    }
+  }
+
+  return 0;
+}
+
+
 void PageView::slotSwitchTool()
 {
   emit switchTool();
--- branches/work/kviewshell-0.7/kviewshell/shell/pageView.h #596543:596544
@@ -190,6 +190,10 @@
 private:
     DocumentWidget* createDocumentWidget();
 
+    /** @returns a pointer to the page widget which displays the page of the
+        given number, or 0 if the page is not in the current tableau. */
+    DocumentWidget* widgetOfPageNumber(const PageNumber&);
+
     /** Moves the viewport so that the widget is at the top left corner. */
     void moveViewportToWidget(QWidget* widget, int y = 0, bool smoothMove = true);
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic