aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormae <qt-info@nokia.com>2009-09-01 15:13:43 +0200
committercon <qtc-committer@nokia.com>2009-09-01 16:25:53 +0200
commita5b09336aca6b9cf2cd8b3429055ab4d68ed217d (patch)
tree6e1ee94fcf449fd9f373ab65764dbbf51ff95862
parent81ed95dda73819477daf8e3b09a36faae1154776 (diff)
Fixed crash in combination with splits (some spurious
focus in events resulted in currentEditorView() being 0) (cherry picked from commit a922accd11bdd1401de4bd9d5f40e5f435236c5e)
-rw-r--r--src/plugins/coreplugin/editormanager/editormanager.cpp4
-rw-r--r--src/plugins/coreplugin/editormanager/editorview.cpp11
-rw-r--r--src/plugins/coreplugin/editormanager/editorview.h2
3 files changed, 9 insertions, 8 deletions
diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp
index c769d4b500..12a31c7e98 100644
--- a/src/plugins/coreplugin/editormanager/editormanager.cpp
+++ b/src/plugins/coreplugin/editormanager/editormanager.cpp
@@ -1484,8 +1484,8 @@ void EditorManager::updateActions()
m_d->m_gotoNextDocHistoryAction->setEnabled(m_d->m_editorModel->rowCount() != 0);
m_d->m_gotoPreviousDocHistoryAction->setEnabled(m_d->m_editorModel->rowCount() != 0);
EditorView *view = currentEditorView();
- m_d->m_goBackAction->setEnabled(view->canGoBack());
- m_d->m_goForwardAction->setEnabled(view->canGoForward());
+ m_d->m_goBackAction->setEnabled(view ? view->canGoBack() : false);
+ m_d->m_goForwardAction->setEnabled(view ? view->canGoForward() : false);
bool hasSplitter = m_d->m_splitter->isSplitter();
m_d->m_removeCurrentSplitAction->setEnabled(hasSplitter);
diff --git a/src/plugins/coreplugin/editormanager/editorview.cpp b/src/plugins/coreplugin/editormanager/editorview.cpp
index 12649c4754..ea9b2ff164 100644
--- a/src/plugins/coreplugin/editormanager/editorview.cpp
+++ b/src/plugins/coreplugin/editormanager/editorview.cpp
@@ -617,7 +617,6 @@ SplitterOrView::SplitterOrView(OpenEditorsModel *model)
m_view = new EditorView(model);
m_splitter = 0;
m_layout->addWidget(m_view);
- setFocusPolicy(Qt::ClickFocus);
}
SplitterOrView::SplitterOrView(Core::IEditor *editor)
@@ -629,7 +628,6 @@ SplitterOrView::SplitterOrView(Core::IEditor *editor)
m_view->addEditor(editor);
m_splitter = 0;
m_layout->addWidget(m_view);
- setFocusPolicy(Qt::ClickFocus);
}
SplitterOrView::~SplitterOrView()
@@ -642,10 +640,11 @@ SplitterOrView::~SplitterOrView()
m_splitter = 0;
}
-
-
-void SplitterOrView::focusInEvent(QFocusEvent *)
+void SplitterOrView::mousePressEvent(QMouseEvent *e)
{
+ if (e->button() != Qt::LeftButton)
+ return;
+ setFocus(Qt::MouseFocusReason);
CoreImpl::instance()->editorManager()->setCurrentView(this);
}
@@ -664,6 +663,7 @@ void SplitterOrView::paintEvent(QPaintEvent *)
const int r = 3;
painter.drawRoundedRect(rect().adjusted(r, r, -r, -r), r * 2, r * 2);
+#if 0
if (hasFocus()) {
#ifdef Q_WS_MAC
// With QMacStyle, we have to draw our own focus rect, since I didn't find
@@ -687,6 +687,7 @@ void SplitterOrView::paintEvent(QPaintEvent *)
}
#endif
}
+#endif
}
SplitterOrView *SplitterOrView::findFirstView()
diff --git a/src/plugins/coreplugin/editormanager/editorview.h b/src/plugins/coreplugin/editormanager/editorview.h
index cf352671ea..76d5233b1d 100644
--- a/src/plugins/coreplugin/editormanager/editorview.h
+++ b/src/plugins/coreplugin/editormanager/editorview.h
@@ -199,8 +199,8 @@ public:
void unsplitAll();
protected:
- void focusInEvent(QFocusEvent *);
void paintEvent(QPaintEvent *);
+ void mousePressEvent(QMouseEvent *e);
private: