Notebook::select now takes the optional parameter "focusPage". (#3446)

This commit is contained in:
pajlada
2022-01-02 15:00:19 +01:00
committed by GitHub
parent b031fc41ef
commit 2b9e2bd1b0
4 changed files with 31 additions and 27 deletions
+23 -20
View File
@@ -131,7 +131,7 @@ int Notebook::indexOf(QWidget *page) const
return -1;
}
void Notebook::select(QWidget *page)
void Notebook::select(QWidget *page, bool focusPage)
{
if (page == this->selectedPage_)
{
@@ -148,20 +148,23 @@ void Notebook::select(QWidget *page)
item.tab->setSelected(true);
item.tab->raise();
if (item.selectedWidget == nullptr)
if (focusPage)
{
item.page->setFocus();
}
else
{
if (containsChild(page, item.selectedWidget))
if (item.selectedWidget == nullptr)
{
item.selectedWidget->setFocus(Qt::MouseFocusReason);
item.page->setFocus();
}
else
{
qCDebug(chatterinoWidget)
<< "Notebook: selected child of page doesn't exist anymore";
if (containsChild(page, item.selectedWidget))
{
item.selectedWidget->setFocus(Qt::MouseFocusReason);
}
else
{
qCDebug(chatterinoWidget) << "Notebook: selected child of "
"page doesn't exist anymore";
}
}
}
}
@@ -216,17 +219,17 @@ bool Notebook::containsChild(const QObject *obj, const QObject *child)
});
}
void Notebook::selectIndex(int index)
void Notebook::selectIndex(int index, bool focusPage)
{
if (index < 0 || this->items_.count() <= index)
{
return;
}
this->select(this->items_[index].page);
this->select(this->items_[index].page, focusPage);
}
void Notebook::selectNextTab()
void Notebook::selectNextTab(bool focusPage)
{
if (this->items_.size() <= 1)
{
@@ -236,10 +239,10 @@ void Notebook::selectNextTab()
auto index =
(this->indexOf(this->selectedPage_) + 1) % this->items_.count();
this->select(this->items_[index].page);
this->select(this->items_[index].page, focusPage);
}
void Notebook::selectPreviousTab()
void Notebook::selectPreviousTab(bool focusPage)
{
if (this->items_.size() <= 1)
{
@@ -253,10 +256,10 @@ void Notebook::selectPreviousTab()
index += this->items_.count();
}
this->select(this->items_[index].page);
this->select(this->items_[index].page, focusPage);
}
void Notebook::selectLastTab()
void Notebook::selectLastTab(bool focusPage)
{
const auto size = this->items_.size();
if (size <= 1)
@@ -264,7 +267,7 @@ void Notebook::selectLastTab()
return;
}
this->select(this->items_[size - 1].page);
this->select(this->items_[size - 1].page, focusPage);
}
int Notebook::getPageCount() const
@@ -806,7 +809,7 @@ SplitContainer *SplitNotebook::getOrAddSelectedPage()
: this->addPage();
}
void SplitNotebook::select(QWidget *page)
void SplitNotebook::select(QWidget *page, bool focusPage)
{
if (auto selectedPage = this->getSelectedPage())
{
@@ -818,7 +821,7 @@ void SplitNotebook::select(QWidget *page)
}
}
}
this->Notebook::select(page);
this->Notebook::select(page, focusPage);
}
} // namespace chatterino