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

List:       kde-commits
Subject:    KDE/kdegraphics/kviewshell/shell
From:       Wilfried Huss <Wilfried.Huss () gmx ! at>
Date:       2006-10-17 20:41:52
Message-ID: 1161117712.128072.28164.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 596547 by whuss:

Port of commit 596544:

fix a recently introduced regression in the search function.

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


--- trunk/KDE/kdegraphics/kviewshell/shell/pageView.cpp #596546:596547
@@ -1029,13 +1029,21 @@
       if (numberOfWidgets() < pageNumber)
         kError(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));
 }
 
@@ -1092,14 +1100,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"
@@ -1127,7 +1138,7 @@
       kError(kvs::shell) << "PageView::gotoAnchor() called with widgetList.size()=" \
<< numberOfWidgets() << ", and page=" << page << endl;  return;
     }
-    _pageWidget = pageWidget(page-1);
+    _pageWidget = widgetOfPageNumber(page);
     if (_pageWidget == 0) {
       kError(kvs::shell) << "PageView::gotoAnchor() called with widgetList.size() > \
1, but widgetList[page] == 0" << endl;  return;
@@ -1313,15 +1324,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();
   }
 }
 
@@ -1416,6 +1425,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();
--- trunk/KDE/kdegraphics/kviewshell/shell/pageView.h #596546:596547
@@ -204,6 +204,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