X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/e46003aca365ca66ce7c7cccd47fb52d1da2fb91..54dfdc930a5511eae2b15f3e87e5d1cd425bdbe4:/src/dolphincolumnwidget.cpp diff --git a/src/dolphincolumnwidget.cpp b/src/dolphincolumnwidget.cpp index 1a7f712f3..a559e3098 100644 --- a/src/dolphincolumnwidget.cpp +++ b/src/dolphincolumnwidget.cpp @@ -55,7 +55,8 @@ DolphinColumnWidget::DolphinColumnWidget(QWidget* parent, m_view(columnView), m_url(url), m_childUrl(), - m_viewOptions(), + m_font(), + m_decorationSize(), m_dirLister(0), m_dolphinModel(0), m_proxyModel(0), @@ -84,17 +85,12 @@ DolphinColumnWidget::DolphinColumnWidget(QWidget* parent, const ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings(); Q_ASSERT(settings != 0); - m_viewOptions = QListView::viewOptions(); - - QFont font(settings->fontFamily(), settings->fontSize()); - font.setItalic(settings->italicFont()); - font.setBold(settings->boldFont()); - m_viewOptions.font = font; + m_font = QFont(settings->fontFamily(), settings->fontSize()); + m_font.setItalic(settings->italicFont()); + m_font.setBold(settings->boldFont()); const int iconSize = settings->iconSize(); - m_viewOptions.decorationSize = QSize(iconSize, iconSize); - - m_viewOptions.showDecorationSelected = true; + m_decorationSize = QSize(iconSize, iconSize); KFileItemDelegate* delegate = new KFileItemDelegate(this); setItemDelegate(delegate); @@ -131,13 +127,14 @@ DolphinColumnWidget::DolphinColumnWidget(QWidget* parent, DolphinColumnWidget::~DolphinColumnWidget() { - delete m_dirLister; - m_dirLister = 0; + delete m_dolphinModel; + m_dolphinModel = 0; + m_dirLister = 0; // deleted by m_dolphinModel } void DolphinColumnWidget::setDecorationSize(const QSize& size) { - m_viewOptions.decorationSize = size; + m_decorationSize = size; doItemsLayout(); } @@ -197,6 +194,16 @@ void DolphinColumnWidget::setNameFilter(const QString& nameFilter) m_proxyModel->setFilterRegExp(nameFilter); } + +QStyleOptionViewItem DolphinColumnWidget::viewOptions() const +{ + QStyleOptionViewItem viewOptions = QListView::viewOptions(); + viewOptions.font = m_font; + viewOptions.decorationSize = m_decorationSize; + viewOptions.showDecorationSelected = true; + return viewOptions; +} + void DolphinColumnWidget::startDrag(Qt::DropActions supportedActions) { DragAndDropHelper::startDrag(this, supportedActions); @@ -227,10 +234,13 @@ void DolphinColumnWidget::dragMoveEvent(QDragMoveEvent* event) // TODO: remove this code when the issue #160611 is solved in Qt 4.4 const QModelIndex index = indexAt(event->pos()); setDirtyRegion(m_dropRect); - if (itemForIndex(index).isDir()) { - m_dropRect = visualRect(index); - } else { - m_dropRect.setSize(QSize()); // set as invalid + + m_dropRect.setSize(QSize()); // set as invalid + if (index.isValid()) { + const KFileItem item = itemForIndex(index); + if (!item.isNull() && item.isDir()) { + m_dropRect = visualRect(index); + } } setDirtyRegion(m_dropRect); } @@ -275,7 +285,7 @@ void DolphinColumnWidget::paintEvent(QPaintEvent* event) // TODO: remove this code when the issue #160611 is solved in Qt 4.4 if (m_dragging) { - const QBrush& brush = m_viewOptions.palette.brush(QPalette::Normal, QPalette::Highlight); + const QBrush& brush = viewOptions().palette.brush(QPalette::Normal, QPalette::Highlight); DragAndDropHelper::drawHoverIndication(viewport(), m_dropRect, brush); } }