┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/dolphinview.cpp
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2009-03-17 20:47:03 +0000
committerPeter Penz <[email protected]>2009-03-17 20:47:03 +0000
commitb8c2f5377772c618b2b032bcd67cd32045c97fc9 (patch)
treea40e28a867bd741587c8afa785a17da3a245b9fc /src/dolphinview.cpp
parentb7b31ce1946ad36b7f5d86838d878aa12b0dfb11 (diff)
After creating an item with the "Create New..." menu, the new item should get selected and it must be assured that the item stays visible. Thanks a lot to Rahman Duran for the original patch and the good discussions :-)
Open issues: - F10 shortcut does not work yet (interface extension might be done in KNewMenu) - Does not work in column view yet, but this is a colum view specific issue. CCMAIL: [email protected] CCMAIL: [email protected] svn path=/trunk/KDE/kdebase/apps/; revision=940624
Diffstat (limited to 'src/dolphinview.cpp')
-rw-r--r--src/dolphinview.cpp32
1 files changed, 30 insertions, 2 deletions
diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp
index 7d7b3503b..696caa04e 100644
--- a/src/dolphinview.cpp
+++ b/src/dolphinview.cpp
@@ -52,17 +52,18 @@
#include "dolphinmodel.h"
#include "dolphincolumnview.h"
#include "dolphincontroller.h"
+#include "dolphindetailsview.h"
#include "dolphinfileitemdelegate.h"
+#include "dolphinnewmenuobserver.h"
#include "dolphinsortfilterproxymodel.h"
-#include "dolphindetailsview.h"
#include "dolphin_detailsmodesettings.h"
#include "dolphiniconsview.h"
-#include "settings/dolphinsettings.h"
#include "dolphin_generalsettings.h"
#include "draganddrophelper.h"
#include "folderexpander.h"
#include "renamedialog.h"
#include "tooltips/tooltipmanager.h"
+#include "settings/dolphinsettings.h"
#include "viewproperties.h"
#include "zoomlevelinfo.h"
@@ -104,6 +105,7 @@ DolphinView::DolphinView(QWidget* parent,
m_toolTipManager(0),
m_rootUrl(),
m_currentItemUrl(),
+ m_createdItemUrl(),
m_expandedDragSource(0)
{
m_topLayout = new QVBoxLayout(this);
@@ -146,6 +148,12 @@ DolphinView::DolphinView(QWidget* parent,
connect(m_dirLister, SIGNAL(refreshItems(const QList<QPair<KFileItem,KFileItem>>&)),
this, SLOT(slotRefreshItems()));
+ // When a new item has been created by the "Create New..." menu, the item should
+ // get selected and it must be assured that the item will get visible. As the
+ // creation is done asynchronously, several signals must be checked:
+ connect(&DolphinNewMenuObserver::instance(), SIGNAL(itemCreated(const KUrl&)),
+ this, SLOT(observeCreatedItem(const KUrl&)));
+
applyViewProperties(url);
m_topLayout->addWidget(itemView());
}
@@ -1081,6 +1089,26 @@ void DolphinView::deleteWhenNotDragSource(QAbstractItemView *view)
}
}
+void DolphinView::observeCreatedItem(const KUrl& url)
+{
+ m_createdItemUrl = url;
+ connect(m_dolphinModel, SIGNAL(rowsInserted(const QModelIndex&, int, int)),
+ this, SLOT(selectAndScrollToCreatedItem()));
+}
+
+void DolphinView::selectAndScrollToCreatedItem()
+{
+ const QModelIndex dirIndex = m_dolphinModel->indexForUrl(m_createdItemUrl);
+ if (dirIndex.isValid()) {
+ const QModelIndex proxyIndex = m_proxyModel->mapFromSource(dirIndex);
+ itemView()->setCurrentIndex(proxyIndex);
+ }
+
+ disconnect(m_dolphinModel, SIGNAL(rowsInserted(const QModelIndex&, int, int)),
+ this, SLOT(selectAndScrollToCreatedItem()));
+ m_createdItemUrl = KUrl();
+}
+
void DolphinView::emitContentsMoved()
{
// only emit the contents moved signal if: