mirror of
https://invent.kde.org/system/dolphin
synced 2024-10-28 03:21:56 +00:00
Merge branch 'Applications/17.04'
This commit is contained in:
commit
95f9dc9de0
|
@ -28,7 +28,8 @@
|
||||||
DolphinTabPage::DolphinTabPage(const QUrl &primaryUrl, const QUrl &secondaryUrl, QWidget* parent) :
|
DolphinTabPage::DolphinTabPage(const QUrl &primaryUrl, const QUrl &secondaryUrl, QWidget* parent) :
|
||||||
QWidget(parent),
|
QWidget(parent),
|
||||||
m_primaryViewActive(true),
|
m_primaryViewActive(true),
|
||||||
m_splitViewEnabled(false)
|
m_splitViewEnabled(false),
|
||||||
|
m_active(true)
|
||||||
{
|
{
|
||||||
QVBoxLayout* layout = new QVBoxLayout(this);
|
QVBoxLayout* layout = new QVBoxLayout(this);
|
||||||
layout->setSpacing(0);
|
layout->setSpacing(0);
|
||||||
|
@ -286,17 +287,31 @@ void DolphinTabPage::restoreStateV1(const QByteArray& state)
|
||||||
m_splitter->restoreState(splitterState);
|
m_splitter->restoreState(splitterState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DolphinTabPage::setActive(bool active)
|
||||||
|
{
|
||||||
|
if (active) {
|
||||||
|
m_active = active;
|
||||||
|
} else {
|
||||||
|
// we should bypass changing active view in split mode
|
||||||
|
m_active = !m_splitViewEnabled;
|
||||||
|
}
|
||||||
|
// we want view to fire activated when goes from false to true
|
||||||
|
activeViewContainer()->setActive(active);
|
||||||
|
}
|
||||||
|
|
||||||
void DolphinTabPage::slotViewActivated()
|
void DolphinTabPage::slotViewActivated()
|
||||||
{
|
{
|
||||||
const DolphinView* oldActiveView = activeViewContainer()->view();
|
const DolphinView* oldActiveView = activeViewContainer()->view();
|
||||||
|
|
||||||
// Set the view, which was active before, to inactive
|
// Set the view, which was active before, to inactive
|
||||||
// and update the active view type.
|
// and update the active view type, if tab is active
|
||||||
if (m_splitViewEnabled) {
|
if (m_active) {
|
||||||
activeViewContainer()->setActive(false);
|
if (m_splitViewEnabled) {
|
||||||
m_primaryViewActive = !m_primaryViewActive;
|
activeViewContainer()->setActive(false);
|
||||||
} else {
|
m_primaryViewActive = !m_primaryViewActive;
|
||||||
m_primaryViewActive = true;
|
} else {
|
||||||
|
m_primaryViewActive = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const DolphinView* newActiveView = activeViewContainer()->view();
|
const DolphinView* newActiveView = activeViewContainer()->view();
|
||||||
|
|
|
@ -129,6 +129,12 @@ public:
|
||||||
*/
|
*/
|
||||||
Q_DECL_DEPRECATED void restoreStateV1(const QByteArray& state);
|
Q_DECL_DEPRECATED void restoreStateV1(const QByteArray& state);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set whether the tab page is active
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void setActive(bool active);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void activeViewChanged(DolphinViewContainer* viewContainer);
|
void activeViewChanged(DolphinViewContainer* viewContainer);
|
||||||
void activeViewUrlChanged(const QUrl& url);
|
void activeViewUrlChanged(const QUrl& url);
|
||||||
|
@ -165,6 +171,7 @@ private:
|
||||||
|
|
||||||
bool m_primaryViewActive;
|
bool m_primaryViewActive;
|
||||||
bool m_splitViewEnabled;
|
bool m_splitViewEnabled;
|
||||||
|
bool m_active;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // DOLPHIN_TAB_PAGE_H
|
#endif // DOLPHIN_TAB_PAGE_H
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
DolphinTabWidget::DolphinTabWidget(QWidget* parent) :
|
DolphinTabWidget::DolphinTabWidget(QWidget* parent) :
|
||||||
QTabWidget(parent),
|
QTabWidget(parent),
|
||||||
m_placesSelectorVisible(true),
|
m_placesSelectorVisible(true),
|
||||||
m_previousTab(-1)
|
m_previousTab(0)
|
||||||
{
|
{
|
||||||
connect(this, &DolphinTabWidget::tabCloseRequested,
|
connect(this, &DolphinTabWidget::tabCloseRequested,
|
||||||
this, static_cast<void (DolphinTabWidget::*)(int)>(&DolphinTabWidget::closeTab));
|
this, static_cast<void (DolphinTabWidget::*)(int)>(&DolphinTabWidget::closeTab));
|
||||||
|
@ -304,15 +304,15 @@ void DolphinTabWidget::tabUrlChanged(const QUrl& url)
|
||||||
|
|
||||||
void DolphinTabWidget::currentTabChanged(int index)
|
void DolphinTabWidget::currentTabChanged(int index)
|
||||||
{
|
{
|
||||||
DolphinViewContainer* viewContainer = tabPageAt(index)->activeViewContainer();
|
// previous tab deactivation
|
||||||
viewContainer->setActive(true);
|
if (DolphinTabPage* tabPage = tabPageAt(m_previousTab)) {
|
||||||
|
tabPage->setActive(false);
|
||||||
|
}
|
||||||
|
DolphinTabPage* tabPage = tabPageAt(index);
|
||||||
|
DolphinViewContainer* viewContainer = tabPage->activeViewContainer();
|
||||||
emit activeViewChanged(viewContainer);
|
emit activeViewChanged(viewContainer);
|
||||||
emit currentUrlChanged(viewContainer->url());
|
emit currentUrlChanged(viewContainer->url());
|
||||||
viewContainer->view()->setFocus();
|
tabPage->setActive(true);
|
||||||
|
|
||||||
if (tabPageAt(m_previousTab)) {
|
|
||||||
tabPageAt(m_previousTab)->activeViewContainer()->setActive(false);
|
|
||||||
}
|
|
||||||
m_previousTab = index;
|
m_previousTab = index;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -230,8 +230,13 @@ bool DolphinSearchBox::eventFilter(QObject* obj, QEvent* event)
|
||||||
{
|
{
|
||||||
switch (event->type()) {
|
switch (event->type()) {
|
||||||
case QEvent::FocusIn:
|
case QEvent::FocusIn:
|
||||||
setActive(true);
|
// #379135: we get the FocusIn event when we close a tab but we don't want to emit
|
||||||
setFocus();
|
// the activated() signal before the removeTab() call in DolphinTabWidget::closeTab() returns.
|
||||||
|
// To avoid this issue, we delay the activation of the search box.
|
||||||
|
QTimer::singleShot(0, this, [this] {
|
||||||
|
setActive(true);
|
||||||
|
setFocus();
|
||||||
|
});
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Reference in a new issue