#include "dolphintabpage.h"
-#include "dolphinviewcontainer.h"
#include "dolphin_generalsettings.h"
+#include "dolphinviewcontainer.h"
#include <QSplitter>
#include <QVBoxLayout>
DolphinTabPage::DolphinTabPage(const QUrl &primaryUrl, const QUrl &secondaryUrl, QWidget* parent) :
QWidget(parent),
m_primaryViewActive(true),
- m_splitViewEnabled(false)
+ m_splitViewEnabled(false),
+ m_active(true)
{
QVBoxLayout* layout = new QVBoxLayout(this);
layout->setSpacing(0);
// If the primary view is active, we have to swap the pointers
// because the secondary view will be the new primary view.
qSwap(m_primaryViewContainer, m_secondaryViewContainer);
+ m_primaryViewActive = false;
}
m_primaryViewContainer->setActive(true);
view->close();
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()
{
const DolphinView* oldActiveView = activeViewContainer()->view();
// Set the view, which was active before, to inactive
- // and update the active view type.
- if (m_splitViewEnabled) {
- activeViewContainer()->setActive(false);
- m_primaryViewActive = !m_primaryViewActive;
- } else {
- m_primaryViewActive = true;
+ // and update the active view type, if tab is active
+ if (m_active) {
+ if (m_splitViewEnabled) {
+ activeViewContainer()->setActive(false);
+ m_primaryViewActive = !m_primaryViewActive;
+ } else {
+ m_primaryViewActive = true;
+ if (m_secondaryViewContainer) {
+ m_secondaryViewContainer->setActive(false);
+ }
+ }
}
const DolphinView* newActiveView = activeViewContainer()->view();