[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