/***************************************************************************
- * Copyright (C) 2007-2009 by Peter Penz <peter.penz@gmx.at> *
+ * Copyright (C) 2007-2009 by Peter Penz <peter.penz19@gmail.com> *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
m_activeUrlTimer(0),
m_assureVisibleActiveColumnTimer(0)
{
- Q_ASSERT(dolphinViewController != 0);
- Q_ASSERT(viewModeController != 0);
+ Q_ASSERT(dolphinViewController);
+ Q_ASSERT(viewModeController);
setAcceptDrops(true);
setFocusPolicy(Qt::NoFocus);
const int viewportWidth = viewport()->width();
const int x = activeColumn()->x();
- // When a column that is partly visible on the left side gets activated,
- // it is useful to also assure that the previous column is partly visible.
- // This allows the user to scroll to the first column without using the
+ // When a column that is partly visible gets activated,
+ // it is useful to also assure that the neighbor column is partly visible.
+ // This allows the user to scroll to the first/last column without using the
// scrollbar and drag & drop operations to invisible columns.
- const int previousColumnGap = 3 * style()->pixelMetric(QStyle::PM_ScrollBarExtent, 0, verticalScrollBar());
+ const int neighborColumnGap = 3 * style()->pixelMetric(QStyle::PM_ScrollBarExtent, 0, verticalScrollBar());
const int width = activeColumn()->maximumWidth();
if (x + width > viewportWidth) {
const int newContentX = m_contentX - x - width + viewportWidth;
if (isRightToLeft()) {
- m_animation->setFrameRange(m_contentX, newContentX + previousColumnGap);
+ m_animation->setFrameRange(m_contentX, newContentX + neighborColumnGap);
} else {
- m_animation->setFrameRange(-m_contentX, -newContentX);
+ m_animation->setFrameRange(-m_contentX, -newContentX + neighborColumnGap);
}
if (m_animation->state() != QTimeLine::Running) {
m_animation->start();
} else if (x < 0) {
const int newContentX = m_contentX - x;
if (isRightToLeft()) {
- m_animation->setFrameRange(m_contentX, newContentX);
+ m_animation->setFrameRange(m_contentX, newContentX - neighborColumnGap);
} else {
- m_animation->setFrameRange(-m_contentX, -newContentX - previousColumnGap);
+ m_animation->setFrameRange(-m_contentX, -newContentX - neighborColumnGap);
}
if (m_animation->state() != QTimeLine::Running) {
m_animation->start();
contentWidth += column->maximumWidth();
}
- if (horizontalScrollBar()->pageStep() != contentWidth) {
- disconnect(horizontalScrollBar(), SIGNAL(valueChanged(int)),
- this, SLOT(moveContentHorizontally(int)));
-
+ const int scrollBarMax = contentWidth - viewport()->width();
+ const bool updateScrollBar = (horizontalScrollBar()->pageStep() != contentWidth)
+ || (horizontalScrollBar()->maximum() != scrollBarMax);
+ if (updateScrollBar) {
horizontalScrollBar()->setPageStep(contentWidth);
- horizontalScrollBar()->setRange(0, contentWidth - viewport()->width());
-
- connect(horizontalScrollBar(), SIGNAL(valueChanged(int)),
- this, SLOT(moveContentHorizontally(int)));
+ horizontalScrollBar()->setRange(0, scrollBarMax);
}
}
if (focusProxy() != column) {
setFocusProxy(column);
}
-
+
if (!column->isActive()) {
// Deactivate the currently active column
if (m_index >= 0) {
m_columns[m_index]->setActive(false);
}
-
+
// Get the index of the column that should get activated
int index = 0;
foreach (DolphinColumnView* currColumn, m_columns) {
void DolphinColumnViewContainer::deleteColumn(DolphinColumnView* column)
{
- if (column == 0) {
+ if (!column) {
return;
}
// during drag operations" is used). Deleting the view
// during an ongoing drag operation is not allowed, so
// this will postponed.
- if (m_dragSource != 0) {
+ if (m_dragSource) {
// the old stored view is obviously not the drag source anymore
m_dragSource->deleteLater();
m_dragSource = 0;