/* * Copyright (c) 2024, Tim Flynn * Copyright (c) 2024, Jamie Mansfield * * SPDX-License-Identifier: BSD-2-Clause */ #include "Tab.h" #include #include #include #include #include #include namespace Ladybird { TabBar::TabBar(QWidget* parent) : QTabBar(parent) { } QSize TabBar::tabSizeHint(int index) const { auto width = this->width() / count(); width = min(225, width); width = max(128, width); auto hint = QTabBar::tabSizeHint(index); hint.setWidth(width); return hint; } void TabBar::contextMenuEvent(QContextMenuEvent* event) { auto* tab_widget = verify_cast(this->parent()); auto* tab = verify_cast(tab_widget->widget(tabAt(event->pos()))); if (tab) tab->context_menu()->exec(event->globalPos()); } TabWidget::TabWidget(QWidget* parent) : QTabWidget(parent) { // This must be called first, otherwise several of the options below have no effect. setTabBar(new TabBar(this)); setDocumentMode(true); setElideMode(Qt::TextElideMode::ElideRight); setMovable(true); setTabsClosable(true); installEventFilter(parent); } TabBarButton::TabBarButton(QIcon const& icon, QWidget* parent) : QPushButton(icon, {}, parent) { resize({ 20, 20 }); setFlat(true); } bool TabBarButton::event(QEvent* event) { if (event->type() == QEvent::Enter) setFlat(false); if (event->type() == QEvent::Leave) setFlat(true); return QPushButton::event(event); } }