[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdesdk/kate
From: Joseph Wenninger <kde () jowenn ! at>
Date: 2008-04-13 11:03:40
Message-ID: 1208084620.525247.28736.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 796339 by jowenn:
implement fix for bug #100979
M +45 -1 app/katefilelist.cpp
M +15 -0 app/katefilelist.h
M +9 -1 app/katemainwindow.cpp
M +1 -0 app/katemainwindow.h
M +18 -11 app/kateviewmanager.cpp
M +1 -0 app/kateviewmanager.h
M +2 -2 data/kateui.rc
--- trunk/KDE/kdesdk/kate/app/katefilelist.cpp #796338:796339
@@ -36,7 +36,7 @@
#include <QtGui/QVBoxLayout>
#include <QtGui/QGridLayout>
#include <QtGui/QGroupBox>
-
+#include <QContextMenuEvent>
#include <kdebug.h>
//END Includes
@@ -48,6 +48,14 @@
m_windowNext = actionCollection->addAction(KStandardAction::Back, this, \
SLOT(slotPrevDocument())); m_windowPrev = \
actionCollection->addAction(KStandardAction::Forward, this, \
SLOT(slotNextDocument()));
+ m_filelistCloseDocument=actionCollection->addAction( KStandardAction::Close, \
"filelist_close", this, SLOT( slotDocumentClose() ) ); + \
m_filelistCloseDocument->setWhatsThis(i18n("Close the current document.")); +
+ m_filelistCloseDocumentOther = actionCollection->addAction( "filelist_close_other" \
); + m_filelistCloseDocumentOther->setText( i18n( "Close Other" ) );
+ connect( m_filelistCloseDocumentOther, SIGNAL( triggered() ), this, SLOT( \
slotDocumentCloseOther() ) ); + \
m_filelistCloseDocumentOther->setWhatsThis(i18n("Close other open documents.")); +
m_sortAction = new KSelectAction( i18n("Sort &By"), this );
actionCollection->addAction( "filelist_sortby", m_sortAction );
@@ -70,6 +78,42 @@
KateFileList::~KateFileList()
{}
+void KateFileList::mousePressEvent ( QMouseEvent * event ) {
+ m_previouslySelected = selectionModel()->currentIndex();
+ QListView::mousePressEvent(event);
+}
+
+void KateFileList::mouseReleaseEvent ( QMouseEvent * event ) {
+ kDebug()<<"KateFileList::mouseReleaseEvent";
+ m_previouslySelected = QModelIndex();
+ QListView::mouseReleaseEvent(event);
+}
+
+void KateFileList::contextMenuEvent ( QContextMenuEvent * event ) {
+ m_indexContextMenu=selectionModel()->currentIndex();
+ emit customContextMenuRequested(static_cast<QContextMenuEvent *>(event)->pos());
+ if (m_previouslySelected.isValid()) {
+ selectionModel()->select(m_previouslySelected,QItemSelectionModel::SelectCurrent);
+ selectionModel()->setCurrentIndex(m_previouslySelected,QItemSelectionModel::SelectCurrent);
+ }
+ event->accept();
+}
+
+void KateFileList::slotDocumentClose() {
+ m_previouslySelected = QModelIndex();
+ QVariant v = m_indexContextMenu.data(KateDocManager::DocumentRole);
+ if (!v.isValid()) return;
+ emit closeDocument(v.value<KTextEditor::Document*>());
+}
+
+void KateFileList::slotDocumentCloseOther() {
+ QVariant v = m_indexContextMenu.data(KateDocManager::DocumentRole);
+ if (!v.isValid()) return;
+ m_previouslySelected = m_indexContextMenu;
+ emit closeOtherDocument(v.value<KTextEditor::Document*>());
+}
+
+
void KateFileList::setSortRole(int role)
{
if (model())
--- trunk/KDE/kdesdk/kate/app/katefilelist.h #796338:796339
@@ -60,14 +60,29 @@
private:
QAction* m_windowNext;
QAction* m_windowPrev;
+ QAction* m_filelistCloseDocument;
+ QAction* m_filelistCloseDocumentOther;
KSelectAction* m_sortAction;
+ QPersistentModelIndex m_previouslySelected;
+ QPersistentModelIndex m_indexContextMenu;
int m_sortType;
public Q_SLOTS:
void slotNextDocument();
void slotPrevDocument();
+ void slotDocumentClose();
+ void slotDocumentCloseOther();
void setSortRole(int role);
void setSortRoleFromAction(QAction*);
+
+ protected:
+ virtual void mousePressEvent ( QMouseEvent * event );
+ virtual void mouseReleaseEvent ( QMouseEvent * event );
+ virtual void contextMenuEvent ( QContextMenuEvent * event );
+
+ Q_SIGNALS:
+ void closeDocument(KTextEditor::Document*);
+ void closeOtherDocument(KTextEditor::Document*);
};
class KateFileListConfigPage : public QWidget {
--- trunk/KDE/kdesdk/kate/app/katemainwindow.cpp #796338:796339
@@ -241,7 +241,8 @@
connect(m_fileList, SIGNAL(activated(const QModelIndex&)), m_documentModel, \
SLOT(opened(const QModelIndex&))); connect(m_fileList, SIGNAL(activated(const \
QModelIndex&)), m_viewManager, SLOT(activateDocument(const QModelIndex &))); \
connect(m_fileList, SIGNAL(customContextMenuRequested(const QPoint &)), this, \
SLOT(showFileListPopup(const QPoint&)));
- m_fileList->setContextMenuPolicy(Qt::CustomContextMenu);
+ connect(m_fileList, \
SIGNAL(closeDocument(KTextEditor::Document*)),m_viewManager,SLOT(slotDocumentClose(KTextEditor::Document*)));
+ connect(m_fileList, \
SIGNAL(closeOtherDocument(KTextEditor::Document*)),this,SLOT(slotDocumentCloseOther(KTextEditor::Document*)));
//filelist = new KateFileList (this, m_viewManager, ft);
// m_fileList->readConfig(KConfigGroup(KGlobal::config(), "FileList"));
@@ -382,6 +383,13 @@
KateDocManager::self()->closeAllDocuments(false);
}
+
+void KateMainWindow::slotDocumentCloseOther(KTextEditor::Document *document)
+{
+ if (queryClose_internal(document))
+ KateDocManager::self()->closeOtherDocuments(document);
+}
+
void KateMainWindow::slotDocumentCloseOther()
{
if (queryClose_internal(m_viewManager->activeView()->document()))
--- trunk/KDE/kdesdk/kate/app/katemainwindow.h #796338:796339
@@ -221,6 +221,7 @@
private Q_SLOTS:
void slotDocumentCloseAll();
void slotDocumentCloseOther();
+ void slotDocumentCloseOther(KTextEditor::Document *document);
void slotDocModified(KTextEditor::Document *document);
private:
static uint uniqueID;
--- trunk/KDE/kdesdk/kate/app/kateviewmanager.cpp #796338:796339
@@ -186,26 +186,33 @@
}
}
-void KateViewManager::slotDocumentClose ()
-{
- // no active view, do nothing
- if (!activeView()) return;
-
- // prevent close document if only one view alive and the document of
+void KateViewManager::slotDocumentClose(KTextEditor::Document *document) {
+// prevent close document if only one view alive and the document of
// it is not modified and empty !!!
if ( (KateDocManager::self()->documents() == 1)
- && !activeView()->document()->isModified()
- && activeView()->document()->url().isEmpty()
- && activeView()->document()->documentEnd() == KTextEditor::Cursor::start() )
+ && !document->isModified()
+ && document->url().isEmpty()
+ && document->documentEnd() == KTextEditor::Cursor::start() )
{
- activeView()->document()->closeUrl();
+ document->closeUrl();
return;
}
// close document
- KateDocManager::self()->closeDocument \
((KTextEditor::Document*)activeView()->document()); + \
KateDocManager::self()->closeDocument (document); }
+
+void KateViewManager::slotDocumentClose ()
+{
+ // no active view, do nothing
+ if (!activeView()) return;
+
+ slotDocumentClose(activeView()->document());
+
+
+}
+
KTextEditor::Document *KateViewManager::openUrl (const KUrl &url, const QString& \
encoding, bool activate, bool isTempFile) {
KTextEditor::Document *doc = KateDocManager::self()->openUrl (url, encoding, \
isTempFile);
--- trunk/KDE/kdesdk/kate/app/kateviewmanager.h #796338:796339
@@ -91,6 +91,7 @@
void slotDocumentNew ();
void slotDocumentOpen ();
void slotDocumentClose ();
+ void slotDocumentClose (KTextEditor::Document *document);
void setActiveSpace ( KateViewSpace* vs );
void setActiveView ( KTextEditor::View* view );
--- trunk/KDE/kdesdk/kate/data/kateui.rc #796338:796339
@@ -160,8 +160,8 @@
<Separator/>
<DefineGroup name="print_merge" />
<Separator/>
- <Action name="file_close"/>
- <Action name="file_close_other"/>
+ <Action name="filelist_close"/>
+ <Action name="filelist_close_other"/>
<Action name="file_close_all"/>
<Separator/>
<Action name="filelist_sortby"/>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic