From 0234add5faa6e66ce6b3773ab7cdef657a6bddf8 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Tue, 2 Apr 2024 21:35:52 -0400 Subject: [PATCH] Ladybird/Qt: Replace the default tab close icon with a vector icon The default icon used by Qt is a bit jarring. Replace it with an icon that resembles our other homemade icons. --- Ladybird/Icons/close.tvg | Bin 0 -> 295 bytes Ladybird/Qt/BrowserWindow.cpp | 17 +++++++++++++++++ Ladybird/Qt/BrowserWindow.h | 2 ++ Ladybird/Qt/ladybird.qrc | 1 + 4 files changed, 20 insertions(+) create mode 100644 Ladybird/Icons/close.tvg diff --git a/Ladybird/Icons/close.tvg b/Ladybird/Icons/close.tvg new file mode 100644 index 0000000000000000000000000000000000000000..b8c7d45c8fb76c222306265b5ec26fbf1e2290a0 GIT binary patch literal 295 zcmXR4V`N}pVPIioU|{&q%)lVR#>mLX{ELBy@gsvc<3|PwMrIJ9!syGG#Mr~gynyjE z<0Z!bjF%W0n3yjzGBV9&G+~NkEM#J~V4Th*#JGp)4Z|ZQ<~Iyam_!-*nZ+6TnVBUR z`I&tg?=bZ+&SPRe&6vRSpHYvAfk}^vnUP7K$%HAHsgP+A6Z3kehfI%{M3_OC`3aK< zGe7fdCVu9ZOw9buFPQEyZDyLsRKmoZz+}p#$Hd44GJ;v3=|5vK(;3D^O#O_^CzvuB z-!Zu`iZIJDGK(%jGBSZYaEX!mKjTHl kGmLW?`x)aHnKKzJ7@Zjf8D$yYFffA%A;zx^pa5Y20QD?BegFUf literal 0 HcmV?d00001 diff --git a/Ladybird/Qt/BrowserWindow.cpp b/Ladybird/Qt/BrowserWindow.cpp index 5a7c042025d..08b1d7d1714 100644 --- a/Ladybird/Qt/BrowserWindow.cpp +++ b/Ladybird/Qt/BrowserWindow.cpp @@ -604,6 +604,7 @@ void BrowserWindow::initialize_tab(Tab* tab) }; m_tabs_container->setTabIcon(m_tabs_container->indexOf(tab), tab->favicon()); + create_close_button_for_tab(tab); tab->focus_location_editor(); } @@ -658,6 +659,22 @@ void BrowserWindow::tab_favicon_changed(int index, QIcon const& icon) m_tabs_container->setTabIcon(index, icon); } +void BrowserWindow::create_close_button_for_tab(Tab* tab) +{ + auto index = m_tabs_container->indexOf(tab); + m_tabs_container->setTabIcon(index, tab->favicon()); + + auto* button = new TabBarButton(create_tvg_icon_with_theme_colors("close", palette())); + auto position = audio_button_position_for_tab(index) == QTabBar::LeftSide ? QTabBar::RightSide : QTabBar::LeftSide; + + connect(button, &QPushButton::clicked, this, [this, tab]() { + auto index = m_tabs_container->indexOf(tab); + close_tab(index); + }); + + m_tabs_container->tabBar()->setTabButton(index, position, button); +} + void BrowserWindow::tab_audio_play_state_changed(int index, Web::HTML::AudioPlayState play_state) { auto* tab = verify_cast(m_tabs_container->widget(index)); diff --git a/Ladybird/Qt/BrowserWindow.h b/Ladybird/Qt/BrowserWindow.h index a5a651abe89..e4caab42ba3 100644 --- a/Ladybird/Qt/BrowserWindow.h +++ b/Ladybird/Qt/BrowserWindow.h @@ -129,6 +129,8 @@ private: } } + void create_close_button_for_tab(Tab*); + QIcon icon_for_page_mute_state(Tab&) const; QString tool_tip_for_page_mute_state(Tab&) const; QTabBar::ButtonPosition audio_button_position_for_tab(int tab_index) const; diff --git a/Ladybird/Qt/ladybird.qrc b/Ladybird/Qt/ladybird.qrc index 65b5ec87889..b4c17459bf1 100644 --- a/Ladybird/Qt/ladybird.qrc +++ b/Ladybird/Qt/ladybird.qrc @@ -2,6 +2,7 @@ ../Icons/ladybird.png ../Icons/back.tvg + ../Icons/close.tvg ../Icons/forward.tvg ../Icons/reload.tvg