]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/dolphinview.cpp
Fix race condition and deadlock in the version plugin
[dolphin.git] / src / views / dolphinview.cpp
index 08e26c5d67408db91472218549e83c78a83d18de..624aa185db8971a5341b506f0fcb4084827293ce 100644 (file)
@@ -122,7 +122,6 @@ DolphinView::DolphinView(const KUrl& url, QWidget* parent) :
     m_model = new KFileItemModel(this);
     m_view = new DolphinItemListView();
     m_view->setEnabledSelectionToggles(GeneralSettings::showSelectionToggle());
-    m_view->setEnlargeSmallPreviews(GeneralSettings::enlargeSmallPreviews());
     m_view->setVisibleRoles(QList<QByteArray>() << "text");
     applyModeToView();
 
@@ -130,6 +129,10 @@ DolphinView::DolphinView(const KUrl& url, QWidget* parent) :
     const int delay = GeneralSettings::autoExpandFolders() ? 750 : -1;
     controller->setAutoActivationDelay(delay);
 
+    // The EnlargeSmallPreviews setting can only be changed after the model
+    // has been set in the view by KItemListController.
+    m_view->setEnlargeSmallPreviews(GeneralSettings::enlargeSmallPreviews());
+
     m_container = new KItemListContainer(controller, this);
     m_container->installEventFilter(this);
     setFocusProxy(m_container);
@@ -635,7 +638,7 @@ void DolphinView::renameSelectedItems()
          return;
      }
 
-     if (items.count() == 1) {
+     if (items.count() == 1 && GeneralSettings::renameInline()) {
          const int index = m_model->index(items.first());
          m_view->editRole(index, "text");
      } else {
@@ -753,6 +756,20 @@ void DolphinView::hideEvent(QHideEvent* event)
     QWidget::hideEvent(event);
 }
 
+bool DolphinView::event(QEvent* event)
+{
+    /* See Bug 297355
+     * Dolphin leaves file preview tooltips open even when is not visible.
+     *
+     * Hide tool-tip when Dolphin loses focus.
+     */
+    if (event->type() == QEvent::WindowDeactivate) {
+        hideToolTip();
+    }
+
+    return QWidget::event(event);
+}
+
 void DolphinView::activate()
 {
     setActive(true);
@@ -1321,6 +1338,10 @@ void DolphinView::slotVisibleRolesChangedByHeader(const QList<QByteArray>& curre
 
 void DolphinView::slotRoleEditingFinished(int index, const QByteArray& role, const QVariant& value)
 {
+    if (index < 0 || index >= m_model->count()) {
+        return;
+    }
+
     if (role == "text") {
         const KFileItem oldItem = m_model->fileItem(index);
         const QString newName = value.toString();