Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Tobias Hunger
qt-creator
Commits
9df34942
Commit
9df34942
authored
Jan 23, 2009
by
mae
Browse files
more stuff works, but this requires more refactoring
parent
624df3c8
Changes
8
Hide whitespace changes
Inline
Side-by-side
src/plugins/coreplugin/coreconstants.h
View file @
9df34942
...
...
@@ -128,6 +128,7 @@ const char * const ZOOM_WINDOW = "QtCreator.ZoomWindow";
const
char
*
const
SPLIT
=
"QtCreator.Split"
;
const
char
*
const
SPLIT_SIDE_BY_SIDE
=
"QtCreator.SplitSideBySide"
;
const
char
*
const
UNSPLIT
=
"QtCreator.Unsplit"
;
const
char
*
const
GOTO_OTHER_WINDOW
=
"QtCreator.GotoOtherWindow"
;
const
char
*
const
SAVEASDEFAULT
=
"QtCreator.SaveAsDefaultLayout"
;
const
char
*
const
RESTOREDEFAULT
=
"QtCreator.RestoreDefaultLayout"
;
const
char
*
const
CLOSE
=
"QtCreator.Close"
;
...
...
src/plugins/coreplugin/editormanager/editormanager.cpp
View file @
9df34942
...
...
@@ -159,6 +159,7 @@ struct EditorManagerPrivate {
QAction
*
m_splitAction
;
QAction
*
m_splitSideBySideAction
;
QAction
*
m_unsplitAction
;
QAction
*
m_gotoOtherWindowAction
;
QList
<
IEditor
*>
m_editorHistory
;
QList
<
EditLocation
*>
m_navigationHistory
;
...
...
@@ -352,6 +353,11 @@ EditorManager::EditorManager(ICore *core, QWidget *parent) :
mwindow
->
addAction
(
cmd
,
Constants
::
G_WINDOW_SPLIT
);
connect
(
m_d
->
m_unsplitAction
,
SIGNAL
(
triggered
()),
this
,
SLOT
(
unsplit
()));
m_d
->
m_gotoOtherWindowAction
=
new
QAction
(
tr
(
"Goto other window"
),
this
);
cmd
=
am
->
registerAction
(
m_d
->
m_gotoOtherWindowAction
,
Constants
::
GOTO_OTHER_WINDOW
,
editManagerContext
);
cmd
->
setDefaultKeySequence
(
QKeySequence
(
tr
(
"Ctrl+E,o"
)));
mwindow
->
addAction
(
cmd
,
Constants
::
G_WINDOW_SPLIT
);
connect
(
m_d
->
m_gotoOtherWindowAction
,
SIGNAL
(
triggered
()),
this
,
SLOT
(
gotoOtherWindow
()));
ActionContainer
*
medit
=
am
->
actionContainer
(
Constants
::
M_EDIT
);
...
...
@@ -384,8 +390,6 @@ EditorManager::EditorManager(ICore *core, QWidget *parent) :
this
,
SLOT
(
updateEditorHistory
()));
m_d
->
m_view
=
new
EditorView
(
m_d
->
m_editorModel
,
this
);
m_d
->
m_splitter
=
new
SplitterOrView
(
m_d
->
m_view
);
connect
(
m_d
->
m_view
,
SIGNAL
(
closeRequested
(
Core
::
IEditor
*
)),
this
,
SLOT
(
closeEditor
(
Core
::
IEditor
*
)));
m_d
->
m_stackedLayout
=
new
QStackedLayout
(
this
);
m_d
->
m_stackedLayout
->
addWidget
(
m_d
->
m_splitter
);
...
...
@@ -489,6 +493,13 @@ void EditorManager::updateCurrentEditorAndGroup(IContext *context)
qDebug
()
<<
"leaving method"
<<
Q_FUNC_INFO
;
}
IEditor
*
EditorManager
::
activateEditor
(
IEditor
*
editor
,
bool
ignoreNavigationHistory
)
{
if
(
m_d
->
m_suppressEditorChanges
)
return
editor
;
return
activateEditor
(
m_d
->
m_splitter
->
findView
(
m_d
->
m_currentEditor
)
->
view
(),
editor
,
ignoreNavigationHistory
);
}
void
EditorManager
::
setCurrentEditor
(
IEditor
*
editor
,
bool
ignoreNavigationHistory
)
{
if
(
debugEditorManager
)
...
...
@@ -499,13 +510,19 @@ void EditorManager::setCurrentEditor(IEditor *editor, bool ignoreNavigationHisto
return
;
m_d
->
m_currentEditor
=
editor
;
if
(
editor
)
{
qDebug
()
<<
"EditorManager::setCurrentEditor"
<<
editor
<<
editor
->
file
()
->
fileName
();
bool
addToHistory
=
(
!
ignoreNavigationHistory
&&
editor
!=
currentEditor
());
if
(
debugEditorManager
)
qDebug
()
<<
Q_FUNC_INFO
<<
(
addToHistory
?
"adding to history"
:
"not adding to history"
);
if
(
addToHistory
)
addCurrentPositionToNavigationHistory
(
true
);
m_d
->
m_suppressEditorChanges
=
true
;
m_d
->
m_view
->
setCurrentEditor
(
editor
);
EditorView
*
view
=
m_d
->
m_splitter
->
findView
(
editor
)
->
view
();
if
(
view
==
m_d
->
m_view
&&
m_d
->
m_splitter
)
unsplitAll
();
view
->
setCurrentEditor
(
editor
);
m_d
->
m_suppressEditorChanges
=
false
;
if
(
addToHistory
)
addCurrentPositionToNavigationHistory
();
...
...
@@ -545,26 +562,23 @@ void EditorManager::closeEditor()
QTimer
::
singleShot
(
0
,
this
,
SLOT
(
closeEditor
()));
postpone
=
false
;
}
else
{
closeEditor
(
currentEditor
()
);
closeEditor
(
m_d
->
m_splitter
->
findView
(
m_d
->
m_currentEditor
)
->
view
(),
m_d
->
m_
currentEditor
);
postpone
=
true
;
}
}
void
EditorManager
::
closeEditor
(
IEditor
*
editor
)
void
EditorManager
::
closeEditor
(
Core
::
Internal
::
EditorView
*
view
,
Core
::
IEditor
*
editor
)
{
if
(
!
editor
)
editor
=
currentEditor
();
if
(
!
editor
)
if
(
!
editor
||
!
view
)
return
;
qDebug
()
<<
"EditorManager::closeEditor"
;
if
(
m_d
->
m_view
->
hasEditor
(
editor
))
{
qDebug
()
<<
"it's a main editor, do unsplit"
;
unsplitAll
();
Q_ASSERT
(
view
->
hasEditor
(
editor
));
if
(
view
==
m_d
->
m_view
)
{
closeEditors
(
QList
<
IEditor
*>
()
<<
editor
);
}
else
{
// ### TODO close duplicate editor
view
->
removeEditor
(
editor
);
closeDuplicate
(
editor
,
true
);
}
...
...
@@ -688,12 +702,14 @@ bool EditorManager::closeEditors(const QList<IEditor*> editorsToClose, bool askA
void
EditorManager
::
closeDuplicate
(
Core
::
IEditor
*
editor
,
bool
doDelete
)
{
m_d
->
m_editorHistory
.
removeAll
(
editor
);
emit
editorAboutToClose
(
editor
);
emit
editorsClosed
(
QList
<
Core
::
IEditor
*>
()
<<
editor
);
if
(
doDelete
)
delete
editor
;
}
void
EditorManager
::
activateEditor
(
Core
::
Internal
::
EditorView
*
view
,
Core
::
IEditor
*
editor
)
Core
::
IEditor
*
EditorManager
::
activateEditor
(
Core
::
Internal
::
EditorView
*
view
,
Core
::
IEditor
*
editor
,
bool
ignoreNavigationHistory
)
{
Q_ASSERT
(
view
&&
editor
);
Q_ASSERT
(
m_d
->
m_view
->
hasEditor
(
editor
));
...
...
@@ -705,18 +721,17 @@ void EditorManager::activateEditor(Core::Internal::EditorView *view, Core::IEdit
if
(
view
==
m_d
->
m_view
||
view
->
hasEditor
(
editor
))
{
view
->
setCurrentEditor
(
editor
);
return
;
return
editor
;
}
QList
<
IEditor
*>
editors
=
view
->
editors
();
IEditor
*
duplicate
=
duplicateEditor
(
editor
);
view
->
addEditor
(
duplicate
);
view
->
setCurrentEditor
(
duplicate
);
view
->
setCurrentEditor
(
duplicate
,
ignoreNavigationHistory
);
foreach
(
IEditor
*
e
,
editors
)
{
view
->
removeEditor
(
e
);
closeDuplicate
(
e
,
true
);
}
return
duplicate
;
}
/* Find editors for a mimetype, best matching at the front
...
...
@@ -808,14 +823,13 @@ IEditor *EditorManager::createEditor(const QString &editorKind,
}
void
EditorManager
::
insertEditor
(
IEditor
*
editor
,
bool
ignoreNavigationHistory
)
bool
/*
ignoreNavigationHistory
*/
)
{
if
(
!
editor
)
return
;
m_d
->
m_core
->
addContextObject
(
editor
);
registerEditor
(
editor
);
m_d
->
m_view
->
addEditor
(
editor
);
setCurrentEditor
(
editor
,
ignoreNavigationHistory
);
emit
editorOpened
(
editor
);
}
...
...
@@ -892,8 +906,7 @@ IEditor *EditorManager::openEditor(const QString &fileName, const QString &edito
const
QList
<
IEditor
*>
editors
=
editorsForFileName
(
fileName
);
if
(
!
editors
.
isEmpty
())
{
setCurrentEditor
(
editors
.
first
(),
ignoreNavigationHistory
);
return
editors
.
first
();
return
activateEditor
(
m_d
->
m_splitter
->
findView
(
m_d
->
m_currentEditor
)
->
view
(),
editors
.
first
(),
ignoreNavigationHistory
);
}
QApplication
::
setOverrideCursor
(
QCursor
(
Qt
::
WaitCursor
));
IEditor
*
editor
=
createEditor
(
editorKind
,
fileName
);
...
...
@@ -908,8 +921,7 @@ IEditor *EditorManager::openEditor(const QString &fileName, const QString &edito
restoreEditorState
(
editor
);
QApplication
::
restoreOverrideCursor
();
ensureEditorManagerVisible
();
setCurrentEditor
(
editor
);
return
editor
;
return
activateEditor
(
editor
,
ignoreNavigationHistory
);
}
QStringList
EditorManager
::
getOpenFileNames
()
const
...
...
@@ -1138,17 +1150,25 @@ bool EditorManager::saveFileAs(IEditor *editor)
void
EditorManager
::
gotoNextDocHistory
()
{
OpenEditorsWindow
*
dialog
=
windowPopup
();
dialog
->
setMode
(
OpenEditorsWindow
::
HistoryMode
);
dialog
->
selectNextEditor
();
showWindowPopup
();
if
(
dialog
->
isVisible
())
{
dialog
->
selectNextEditor
();
}
else
{
dialog
->
setEditors
(
m_d
->
m_editorHistory
,
m_d
->
m_currentEditor
);
dialog
->
selectNextEditor
();
showWindowPopup
();
}
}
void
EditorManager
::
gotoPreviousDocHistory
()
{
OpenEditorsWindow
*
dialog
=
windowPopup
();
dialog
->
setMode
(
OpenEditorsWindow
::
HistoryMode
);
dialog
->
selectPreviousEditor
();
showWindowPopup
();
if
(
dialog
->
isVisible
())
{
dialog
->
selectPreviousEditor
();
}
else
{
dialog
->
setEditors
(
m_d
->
m_editorHistory
,
m_d
->
m_currentEditor
);
dialog
->
selectPreviousEditor
();
showWindowPopup
();
}
}
void
EditorManager
::
makeCurrentEditorWritable
()
...
...
@@ -1560,19 +1580,33 @@ Core::IEditor *EditorManager::duplicateEditor(Core::IEditor *editor)
return
duplicate
;
}
void
EditorManager
::
split
(
Qt
::
Orientation
orientation
)
{
SplitterOrView
*
view
=
m_d
->
m_currentEditor
?
m_d
->
m_splitter
->
findView
(
m_d
->
m_currentEditor
)
:
m_d
->
m_splitter
->
findFirstView
();
if
(
!
view
)
{
view
=
m_d
->
m_splitter
;
view
->
unsplit
(
0
);
}
view
->
split
(
orientation
);
}
void
EditorManager
::
split
()
{
m_d
->
m_splitter
->
split
(
Qt
::
Vertical
);
split
(
Qt
::
Vertical
);
}
void
EditorManager
::
splitSideBySide
()
{
m_d
->
m_splitter
->
split
(
Qt
::
Horizontal
);
split
(
Qt
::
Horizontal
);
}
void
EditorManager
::
unsplit
()
{
unsplitAll
();
// ### TODO
qDebug
()
<<
"unsplit"
<<
(
m_d
->
m_currentEditor
?
m_d
->
m_currentEditor
->
file
()
->
fileName
()
:
QString
(
"no current editor"
));
SplitterOrView
*
splitter
=
m_d
->
m_currentEditor
?
m_d
->
m_splitter
->
findSplitter
(
m_d
->
m_currentEditor
)
:
m_d
->
m_splitter
;
qDebug
()
<<
"splitter"
<<
splitter
;
if
(
splitter
)
splitter
->
unsplit
(
m_d
->
m_currentEditor
);
}
void
EditorManager
::
unsplitAll
()
...
...
@@ -1582,6 +1616,26 @@ void EditorManager::unsplitAll()
setCurrentEditor
(
e
);
}
void
EditorManager
::
gotoOtherWindow
()
{
qDebug
()
<<
"gotoOtherWindow"
;
if
(
!
m_d
->
m_currentEditor
)
return
;
qDebug
()
<<
"current editor"
<<
m_d
->
m_currentEditor
->
file
()
->
fileName
();
if
(
m_d
->
m_splitter
->
isSplitter
())
{
qDebug
()
<<
"we have a splitter"
;
SplitterOrView
*
view
=
m_d
->
m_splitter
->
findNextView
(
m_d
->
m_currentEditor
);
qDebug
()
<<
"next view is"
<<
view
;
if
(
!
view
)
view
=
m_d
->
m_splitter
->
findFirstView
();
if
(
view
)
{
if
(
IEditor
*
editor
=
view
->
editor
())
{
qDebug
()
<<
"set new current editor to"
<<
editor
->
file
()
->
fileName
();
view
->
view
()
->
setCurrentEditor
(
editor
);
}
}
}
}
//===================EditorClosingCoreListener======================
EditorClosingCoreListener
::
EditorClosingCoreListener
(
EditorManager
*
em
)
...
...
src/plugins/coreplugin/editormanager/editormanager.h
View file @
9df34942
...
...
@@ -118,6 +118,7 @@ public:
void
setCurrentEditor
(
IEditor
*
editor
,
bool
ignoreNavigationHistory
=
false
);
IEditor
*
currentEditor
()
const
;
IEditor
*
activateEditor
(
IEditor
*
editor
,
bool
ignoreNavigationHistory
=
false
);
// EditorGroup *currentEditorGroup() const;
QList
<
IEditor
*>
openedEditors
()
const
;
...
...
@@ -189,7 +190,6 @@ private slots:
bool
saveFile
(
Core
::
IEditor
*
editor
=
0
);
bool
saveFileAs
(
Core
::
IEditor
*
editor
=
0
);
void
closeEditor
();
void
closeEditor
(
Core
::
IEditor
*
editor
);
void
gotoNextDocHistory
();
void
gotoPreviousDocHistory
();
...
...
@@ -200,10 +200,12 @@ private slots:
void
goBackInNavigationHistory
();
void
goForwardInNavigationHistory
();
void
makeCurrentEditorWritable
();
void
split
(
Qt
::
Orientation
orientation
);
void
split
();
void
splitSideBySide
();
void
unsplit
();
void
unsplitAll
();
void
gotoOtherWindow
();
private:
QList
<
IFile
*>
filesForEditors
(
QList
<
IEditor
*>
editors
)
const
;
...
...
@@ -218,7 +220,8 @@ private:
Core
::
IEditor
*
duplicateEditor
(
IEditor
*
editor
);
void
closeDuplicate
(
Core
::
IEditor
*
editor
,
bool
doDelete
);
void
activateEditor
(
Core
::
Internal
::
EditorView
*
view
,
Core
::
IEditor
*
editor
);
Core
::
IEditor
*
activateEditor
(
Core
::
Internal
::
EditorView
*
view
,
Core
::
IEditor
*
editor
,
bool
ignoreNavigationHistory
=
false
);
void
closeEditor
(
Core
::
Internal
::
EditorView
*
view
,
Core
::
IEditor
*
editor
);
static
EditorManager
*
m_instance
;
EditorManagerPrivate
*
m_d
;
...
...
src/plugins/coreplugin/editormanager/editorview.cpp
View file @
9df34942
...
...
@@ -335,8 +335,9 @@ void EditorView::insertEditor(int index, IEditor *editor)
connect
(
editor
,
SIGNAL
(
changed
()),
this
,
SLOT
(
checkEditorStatus
()));
if
(
m_container
->
count
()
==
1
)
{
updateToolBar
(
editor
);
m_editorList
->
setCurrentIndex
(
qobject_cast
<
EditorModel
*>
(
m_editorList
->
model
())
->
indexOf
(
editor
->
file
()
->
fileName
()).
row
()
);
updateEditorStatus
(
editor
);
updateToolBar
(
editor
);
}
}
...
...
@@ -347,7 +348,8 @@ bool EditorView::hasEditor(IEditor *editor) const
void
EditorView
::
sendCloseRequest
()
{
emit
closeRequested
(
currentEditor
());
EditorManager
*
em
=
CoreImpl
::
instance
()
->
editorManager
();
em
->
closeEditor
(
this
,
currentEditor
());
}
void
EditorView
::
removeEditor
(
IEditor
*
editor
)
...
...
@@ -379,19 +381,18 @@ IEditor *EditorView::currentEditor() const
return
0
;
}
void
EditorView
::
setCurrentEditor
(
IEditor
*
editor
)
void
EditorView
::
setCurrentEditor
(
IEditor
*
editor
,
bool
ignoreNavigationHistory
)
{
if
(
!
editor
||
m_container
->
count
()
<=
0
||
m_container
->
indexOf
(
editor
->
widget
())
==
-
1
)
return
;
if
(
editor
)
qDebug
()
<<
"EditorView::setCurrentEditor"
<<
editor
->
file
()
->
fileName
();
const
int
idx
=
m_container
->
indexOf
(
editor
->
widget
());
QTC_ASSERT
(
idx
>=
0
,
return
);
if
(
m_container
->
currentIndex
()
!=
idx
)
{
m_container
->
setCurrentIndex
(
idx
);
m_editorList
->
setCurrentIndex
(
qobject_cast
<
EditorModel
*>
(
m_editorList
->
model
())
->
indexOf
(
editor
->
file
()
->
fileName
()).
row
());
}
m_container
->
setCurrentIndex
(
idx
);
m_editorList
->
setCurrentIndex
(
qobject_cast
<
EditorModel
*>
(
m_editorList
->
model
())
->
indexOf
(
editor
->
file
()
->
fileName
()).
row
());
setEditorFocus
(
idx
);
updateEditorStatus
(
editor
);
updateToolBar
(
editor
);
...
...
@@ -401,6 +402,9 @@ void EditorView::setCurrentEditor(IEditor *editor)
m_infoWidget
->
hide
();
m_editorForInfoWidget
=
0
;
}
EditorManager
*
em
=
CoreImpl
::
instance
()
->
editorManager
();
if
(
em
->
currentEditor
()
!=
editor
)
em
->
setCurrentEditor
(
editor
,
ignoreNavigationHistory
);
}
void
EditorView
::
checkEditorStatus
()
...
...
@@ -490,9 +494,23 @@ SplitterOrView::SplitterOrView(Core::IEditor *editor, QWidget *parent)
m_layout
->
addWidget
(
m_view
);
}
SplitterOrView
*
SplitterOrView
::
findFirstView
()
{
if
(
m_splitter
)
{
for
(
int
i
=
0
;
i
<
m_splitter
->
count
();
++
i
)
{
if
(
SplitterOrView
*
splitterOrView
=
qobject_cast
<
SplitterOrView
*>
(
m_splitter
->
widget
(
i
)))
if
(
SplitterOrView
*
result
=
splitterOrView
->
findFirstView
())
return
result
;
}
return
0
;
}
return
this
;
}
SplitterOrView
*
SplitterOrView
::
findView
(
Core
::
IEditor
*
editor
)
{
if
(
hasEditor
(
editor
))
if
(
!
editor
||
hasEditor
(
editor
))
return
this
;
if
(
m_splitter
)
{
for
(
int
i
=
0
;
i
<
m_splitter
->
count
();
++
i
)
{
...
...
@@ -519,6 +537,37 @@ SplitterOrView *SplitterOrView::findSplitter(Core::IEditor *editor)
return
0
;
}
SplitterOrView
*
SplitterOrView
::
findNextView
(
Core
::
IEditor
*
editor
)
{
bool
found
=
false
;
return
findNextView_helper
(
editor
,
&
found
);
}
SplitterOrView
*
SplitterOrView
::
findNextView_helper
(
Core
::
IEditor
*
editor
,
bool
*
found
)
{
qDebug
()
<<
"check view "
<<
this
<<
"view"
<<
m_view
<<
"splitter"
<<
m_splitter
<<
"found"
<<
*
found
;
if
(
*
found
&&
m_view
)
{
qDebug
()
<<
"found next!"
;
return
this
;
}
if
(
hasEditor
(
editor
))
{
qDebug
()
<<
"found editor"
;
*
found
=
true
;
return
0
;
}
if
(
m_splitter
)
{
for
(
int
i
=
0
;
i
<
m_splitter
->
count
();
++
i
)
{
if
(
SplitterOrView
*
splitterOrView
=
qobject_cast
<
SplitterOrView
*>
(
m_splitter
->
widget
(
i
)))
{
if
(
SplitterOrView
*
result
=
splitterOrView
->
findNextView_helper
(
editor
,
found
))
return
result
;
}
}
}
return
0
;
}
void
SplitterOrView
::
split
(
Qt
::
Orientation
orientation
)
{
Q_ASSERT
(
m_view
&&
m_splitter
==
0
);
...
...
@@ -526,14 +575,14 @@ void SplitterOrView::split(Qt::Orientation orientation)
m_splitter
->
setOrientation
(
orientation
);
Core
::
IEditor
*
e
=
m_view
->
currentEditor
();
Core
::
IEditor
*
focus
=
e
;
SplitterOrView
*
focusView
=
0
;
if
(
m_isRoot
)
{
Core
::
IEditor
*
duplicateA
=
CoreImpl
::
instance
()
->
editorManager
()
->
duplicateEditor
(
e
);
m_splitter
->
addWidget
(
new
SplitterOrView
(
duplicateA
));
focus
=
duplicateA
;
m_splitter
->
addWidget
((
focusView
=
new
SplitterOrView
(
duplicateA
)));
}
else
{
m_view
->
removeEditor
(
e
);
m_splitter
->
addWidget
(
new
SplitterOrView
(
e
));
m_splitter
->
addWidget
(
(
focusView
=
new
SplitterOrView
(
e
))
)
;
Q_ASSERT
(
m_view
->
currentEditor
()
==
0
);
}
Core
::
IEditor
*
duplicate
=
CoreImpl
::
instance
()
->
editorManager
()
->
duplicateEditor
(
e
);
...
...
@@ -547,7 +596,7 @@ void SplitterOrView::split(Qt::Orientation orientation)
m_layout
->
setCurrentWidget
(
m_splitter
);
}
focus
->
widget
()
->
setFocus
(
);
focus
View
->
view
()
->
setCurrentEditor
(
focusView
->
editor
()
);
}
void
SplitterOrView
::
close
()
...
...
@@ -576,8 +625,8 @@ void SplitterOrView::unsplit(Core::IEditor *editor)
if
(
!
m_isRoot
)
{
m_view
=
new
EditorView
(
CoreImpl
::
instance
()
->
editorManager
()
->
openedEditorsModel
());
m_view
->
addEditor
(
editor
);
m_view
->
setCurrentEditor
(
editor
);
m_layout
->
addWidget
(
m_view
);
m_view
->
setCurrentEditor
(
editor
);
}
closeSplitterEditors
();
delete
m_splitter
;
...
...
src/plugins/coreplugin/editormanager/editorview.h
View file @
9df34942
...
...
@@ -104,7 +104,7 @@ public:
void
insertEditor
(
int
i
,
IEditor
*
editor
);
void
removeEditor
(
IEditor
*
editor
);
IEditor
*
currentEditor
()
const
;
void
setCurrentEditor
(
IEditor
*
editor
);
void
setCurrentEditor
(
IEditor
*
editor
,
bool
ignoreNavigationHistory
=
false
);
bool
hasEditor
(
IEditor
*
editor
)
const
;
...
...
@@ -117,9 +117,6 @@ public:
void
focusInEvent
(
QFocusEvent
*
e
);
signals:
void
closeRequested
(
Core
::
IEditor
*
editor
);
private
slots
:
void
sendCloseRequest
();
void
updateEditorStatus
(
Core
::
IEditor
*
editor
=
0
);
...
...
@@ -159,6 +156,7 @@ public:
void
unsplit
(
Core
::
IEditor
*
editor
);
bool
isView
()
const
{
return
m_view
!=
0
;
}
bool
isSplitter
()
const
{
return
m_splitter
!=
0
;
}
Core
::
IEditor
*
editor
()
const
{
return
m_view
?
m_view
->
currentEditor
()
:
0
;
}
QList
<
Core
::
IEditor
*>
editors
()
const
{
return
m_view
?
m_view
->
editors
()
:
QList
<
Core
::
IEditor
*>
();
}
bool
hasEditor
(
Core
::
IEditor
*
editor
)
const
{
return
m_view
&&
m_view
->
hasEditor
(
editor
);
}
...
...
@@ -166,11 +164,15 @@ public:
QSplitter
*
splitter
()
const
{
return
m_splitter
;
}
SplitterOrView
*
findView
(
Core
::
IEditor
*
editor
);
SplitterOrView
*
findFirstView
();
SplitterOrView
*
findSplitter
(
Core
::
IEditor
*
editor
);
SplitterOrView
*
findNextView
(
Core
::
IEditor
*
editor
);
private:
void
close
();
void
closeSplitterEditors
();
SplitterOrView
*
findNextView_helper
(
Core
::
IEditor
*
editor
,
bool
*
found
);
bool
m_isRoot
;
QStackedLayout
*
m_layout
;
EditorView
*
m_view
;
...
...
src/plugins/coreplugin/editormanager/openeditorsview.cpp
View file @
9df34942
...
...
@@ -97,7 +97,7 @@ void OpenEditorsWidget::updateCurrentItem(Core::IEditor *editor)
void
OpenEditorsWidget
::
selectEditor
(
const
QModelIndex
&
index
)
{
IEditor
*
editor
=
index
.
data
(
Qt
::
UserRole
).
value
<
IEditor
*>
();
EditorManager
::
instance
()
->
setCurrent
Editor
(
editor
);
EditorManager
::
instance
()
->
activate
Editor
(
editor
);
}
...
...
src/plugins/coreplugin/editormanager/openeditorswindow.cpp
View file @
9df34942
...
...
@@ -58,7 +58,6 @@ bool OpenEditorsWindow::isSameFile(IEditor *editorA, IEditor *editorB) const
OpenEditorsWindow
::
OpenEditorsWindow
(
QWidget
*
parent
)
:
QWidget
(
parent
,
Qt
::
Popup
),
m_editorList
(
new
QTreeWidget
(
this
)),
m_mode
(
HistoryMode
),
m_current
(
0
)
{
resize
(
QSize
(
WIDTH
,
HEIGHT
));
...
...
@@ -79,13 +78,6 @@ OpenEditorsWindow::OpenEditorsWindow(QWidget *parent) :
m_autoHide
.
setSingleShot
(
true
);
connect
(
&
m_autoHide
,
SIGNAL
(
timeout
()),
this
,
SLOT
(
selectAndHide
()));
EditorManager
*
em
=
EditorManager
::
instance
();
connect
(
em
,
SIGNAL
(
editorOpened
(
Core
::
IEditor
*
)),
this
,
SLOT
(
updateEditorList
()));
connect
(
em
,
SIGNAL
(
editorsClosed
(
QList
<
Core
::
IEditor
*>
)),
this
,
SLOT
(
updateEditorList
()));
connect
(
em
,
SIGNAL
(
currentEditorChanged
(
Core
::
IEditor
*
)),
this
,
SLOT
(
updateEditorList
()));
}
void
OpenEditorsWindow
::
selectAndHide
()
...
...
@@ -98,7 +90,6 @@ void OpenEditorsWindow::setVisible(bool visible)
{
QWidget
::
setVisible
(
visible
);
if
(
visible
)
{
updateEditorList
(
m_current
);
m_autoHide
.
start
(
600
);
setFocus
();
}
...
...
@@ -106,8 +97,6 @@ void OpenEditorsWindow::setVisible(bool visible)
bool
OpenEditorsWindow
::
isCentering
()
{
if
(
m_mode
==
OpenEditorsWindow
::
HistoryMode
||
m_editorList
->
topLevelItemCount
()
<
3
)
return
false
;
int
internalMargin
=
m_editorList
->
viewport
()
->
mapTo
(
m_editorList
,
QPoint
(
0
,
0
)).
y
();
QRect
rect0
=
m_editorList
->
visualItemRect
(
m_editorList
->
topLevelItem
(
0
));
QRect
rect1
=
m_editorList
->
visualItemRect
(
m_editorList
->
topLevelItem
(
m_editorList
->
topLevelItemCount
()
-
1
));
...
...
@@ -118,11 +107,6 @@ bool OpenEditorsWindow::isCentering()
return
false
;
}
void
OpenEditorsWindow
::
setMode
(
Mode
mode
)
{
m_mode
=
mode
;
updateEditorList
(
m_current
);
}
bool
OpenEditorsWindow
::
event
(
QEvent
*
e
)
{
if
(
e
->
type
()
==
QEvent
::
KeyRelease
)
{
...
...
@@ -187,89 +171,17 @@ void OpenEditorsWindow::selectUpDown(bool up)
count
++
;
}
if
(
editor
)
upda
teEditor
List
(
editor
);
setSelec
te
d
Editor
(
editor
);
}
void
OpenEditorsWindow
::
selectPreviousEditor
()
{
selectUpDown
(
m_mode
==
ListMod
e
);
selectUpDown
(
fals
e
);
}
void
OpenEditorsWindow
::
selectNextEditor
()
{
selectUpDown
(
m_mode
!=
ListMode
);
}
void
OpenEditorsWindow
::
updateEditorList
(
IEditor
*
editor
)
{
if
(
!
editor
)
editor
=
EditorManager
::
instance
()
->
currentEditor
();
m_current
=
editor
;
if
(
m_mode
==
ListMode
)