diff --git a/Ladybird/Qt/BrowserWindow.cpp b/Ladybird/Qt/BrowserWindow.cpp index 4b617c0542f..e2a9850fbdf 100644 --- a/Ladybird/Qt/BrowserWindow.cpp +++ b/Ladybird/Qt/BrowserWindow.cpp @@ -650,11 +650,12 @@ void BrowserWindow::tab_favicon_changed(int index, QIcon const& icon) void BrowserWindow::tab_audio_play_state_changed(int index, Web::HTML::AudioPlayState play_state) { auto* tab = verify_cast(m_tabs_container->widget(index)); + auto position = audio_button_position_for_tab(index); switch (play_state) { case Web::HTML::AudioPlayState::Paused: if (tab->view().page_mute_state() == Web::HTML::MuteState::Unmuted) - m_tabs_container->tabBar()->setTabButton(index, QTabBar::LeftSide, nullptr); + m_tabs_container->tabBar()->setTabButton(index, position, nullptr); break; case Web::HTML::AudioPlayState::Playing: @@ -663,23 +664,23 @@ void BrowserWindow::tab_audio_play_state_changed(int index, Web::HTML::AudioPlay button->setFlat(true); button->resize({ 20, 20 }); - connect(button, &QPushButton::clicked, this, [this, tab]() { + connect(button, &QPushButton::clicked, this, [this, tab, position]() { tab->view().toggle_page_mute_state(); auto index = tab_index(tab); switch (tab->view().audio_play_state()) { case Web::HTML::AudioPlayState::Paused: - m_tabs_container->tabBar()->setTabButton(index, QTabBar::LeftSide, nullptr); + m_tabs_container->tabBar()->setTabButton(index, position, nullptr); break; case Web::HTML::AudioPlayState::Playing: - auto* button = m_tabs_container->tabBar()->tabButton(index, QTabBar::LeftSide); + auto* button = m_tabs_container->tabBar()->tabButton(index, position); verify_cast(button)->setIcon(icon_for_page_mute_state(*tab)); button->setToolTip(tool_tip_for_page_mute_state(*tab)); break; } }); - m_tabs_container->tabBar()->setTabButton(index, QTabBar::LeftSide, button); + m_tabs_container->tabBar()->setTabButton(index, position, button); break; } } @@ -708,6 +709,13 @@ QString BrowserWindow::tool_tip_for_page_mute_state(Tab& tab) const VERIFY_NOT_REACHED(); } +QTabBar::ButtonPosition BrowserWindow::audio_button_position_for_tab(int tab_index) const +{ + if (m_tabs_container->tabBar()->tabButton(tab_index, QTabBar::LeftSide)) + return QTabBar::RightSide; + return QTabBar::LeftSide; +} + void BrowserWindow::open_next_tab() { if (m_tabs_container->count() <= 1) diff --git a/Ladybird/Qt/BrowserWindow.h b/Ladybird/Qt/BrowserWindow.h index 4d364a4788c..619588384f4 100644 --- a/Ladybird/Qt/BrowserWindow.h +++ b/Ladybird/Qt/BrowserWindow.h @@ -130,6 +130,7 @@ private: 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; QScreen* m_current_screen; double m_device_pixel_ratio { 0 };