~ubuntu-branches/ubuntu/lucid/kdebase/lucid

« back to all changes in this revision

Viewing changes to apps/plasma/applets/folderview/iconview.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Steve Stalcup, Jonathan Thomas, Steve Stalcup
  • Date: 2009-03-26 21:35:49 UTC
  • mfrom: (1.1.25 upstream)
  • Revision ID: james.westby@ubuntu.com-20090326213549-9b4u15a3pynbnrw6
Tags: 4:4.2.2-0ubuntu1
[Jonathan Thomas]
* Add kubuntu_09_trash_kcm_in_dolphin.diff to put the Trash KCM inside
  Dolphin's Configuration page. Can be removed in KDE 4.3.

[Steve Stalcup]
* New upstream release
* Bump KDE versions in debian/control
* Remove kubuntu_07_konsole_split_svn935623.diff
* Remove kubuntu_08_konsole_text_selection.diff

Show diffs side-by-side

added added

removed removed

Lines of Context:
215
215
    return m_drawShadows;
216
216
}
217
217
 
 
218
void IconView::setCustomLayout(bool value)
 
219
{
 
220
    m_layoutBroken = value;
 
221
}
 
222
 
 
223
bool IconView::customLayout() const
 
224
{
 
225
    return m_layoutBroken;
 
226
}
 
227
 
218
228
void IconView::setIconPositionsData(const QStringList &data)
219
229
{
220
230
    // Sanity checks
349
359
 
350
360
void IconView::layoutChanged()
351
361
{
352
 
    m_savedPositions.clear();
353
 
    m_layoutBroken = false;
354
 
    m_validRows = 0;
355
 
 
 
362
    if (m_validRows > 0) {
 
363
        m_savedPositions.clear();
 
364
        m_layoutBroken = false;
 
365
        m_validRows = 0;
 
366
    } else if (m_layoutBroken && m_savedPositions.isEmpty()) {
 
367
        // Make sure that the new sorting order is applied to
 
368
        // new files if the folder is empty.
 
369
        m_layoutBroken = false;
 
370
    }
356
371
    m_delayedLayoutTimer.start(10, this);
357
372
    emit busy(true);
358
373
}
1133
1148
{
1134
1149
    updateScrollBarGeometry();
1135
1150
 
1136
 
    int maxWidth  = contentsRect().width() - m_scrollBar->geometry().width();
1137
 
    int maxHeight = contentsRect().height();
1138
 
 
1139
 
    if (m_validRows > 0)
1140
 
    {
1141
 
        if ((m_flow == QListView::LeftToRight && columnsForWidth(maxWidth) != m_columns) ||
1142
 
            (m_flow == QListView::TopToBottom && rowsForHeight(maxHeight) != m_rows))
1143
 
        {
1144
 
            // The scrollbar range will be updated after the re-layout
1145
 
            if (m_validRows > 0) {
1146
 
                m_delayedRelayoutTimer.start(500, this);
1147
 
            } else {
1148
 
                m_delayedLayoutTimer.start(10, this);
1149
 
                emit busy(true);
1150
 
            }
1151
 
        } else {
1152
 
            updateScrollBar();
1153
 
            markAreaDirty(visibleArea());
1154
 
        }
 
1151
    if (m_validRows > 0) {
 
1152
        // A check is done when the timer fires to make sure that a relayout
 
1153
        // is really necessary.
 
1154
        m_delayedRelayoutTimer.start(500, this);
 
1155
        updateScrollBar();
1155
1156
    }
1156
1157
}
1157
1158
 
1734
1735
        layoutItems();
1735
1736
    }
1736
1737
    else if (event->timerId() == m_delayedRelayoutTimer.timerId()) {
1737
 
        emit busy(true);
1738
1738
        m_delayedRelayoutTimer.stop();
1739
1739
 
1740
 
        // This is to give the busy animation a chance to appear.
1741
 
        m_delayedLayoutTimer.start(10, this);
1742
 
        m_validRows = 0;
 
1740
        if (m_layoutBroken) {
 
1741
            // Relayout all icons that have ended up outside the view
 
1742
            const QRect cr = contentsRect().toRect();
 
1743
            const QSize grid = gridSize();
 
1744
            QPoint pos;
 
1745
 
 
1746
            for (int i = 0; i < m_items.size(); i++) {
 
1747
                if ((m_flow == QListView::LeftToRight && m_items[i].rect.right() > cr.right()) ||
 
1748
                    (m_flow == QListView::TopToBottom && m_items[i].rect.bottom() > cr.height()))
 
1749
                {
 
1750
                    pos = findNextEmptyPosition(pos, grid, cr);
 
1751
                    m_items[i].rect.moveTo(pos);
 
1752
                }
 
1753
            }
 
1754
            m_regionCache.clear();
 
1755
            markAreaDirty(visibleArea());
 
1756
        } else {
 
1757
            int maxWidth  = contentsRect().width() - m_scrollBar->geometry().width();
 
1758
            int maxHeight = contentsRect().height();
 
1759
 
 
1760
            if ((m_flow == QListView::LeftToRight && columnsForWidth(maxWidth) != m_columns) ||
 
1761
                (m_flow == QListView::TopToBottom && rowsForHeight(maxHeight) != m_rows))
 
1762
            {
 
1763
                emit busy(true);
 
1764
                // This is to give the busy animation a chance to appear.
 
1765
                m_delayedLayoutTimer.start(10, this);
 
1766
                m_validRows = 0;
 
1767
            }
 
1768
        }
1743
1769
    }
1744
1770
}
1745
1771