Using the status bar for this meant that the "DevTools is enabled on port X" message would get overwritten whenever the user hovered over a menu item. We don't otherwise use or need a status bar, so replace it with an explicit banner widget that's only used for this purpose. Keep the existing styling so it looks the same as before.
62 lines
1.5 KiB
C++
62 lines
1.5 KiB
C++
/*
|
|
* Copyright (c) 2026-present, the Ladybird developers.
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#include <UI/Qt/ChromeStyle.h>
|
|
#include <UI/Qt/DevToolsBanner.h>
|
|
#include <UI/Qt/StringUtils.h>
|
|
|
|
#include <QEvent>
|
|
#include <QHBoxLayout>
|
|
#include <QLabel>
|
|
#include <QPushButton>
|
|
|
|
namespace Ladybird {
|
|
|
|
DevToolsBanner::DevToolsBanner(QWidget* parent)
|
|
: QWidget(parent)
|
|
{
|
|
setObjectName("LadybirdDevToolsBanner");
|
|
setAttribute(Qt::WA_StyledBackground);
|
|
setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
|
|
update_chrome_style();
|
|
|
|
auto* layout = new QHBoxLayout(this);
|
|
layout->setContentsMargins(12, 3, 12, 3);
|
|
layout->setSpacing(6);
|
|
|
|
m_label = new QLabel(this);
|
|
layout->addWidget(m_label);
|
|
layout->addStretch();
|
|
|
|
auto* disable_button = new QPushButton("Disable", this);
|
|
connect(disable_button, &QPushButton::clicked, this, &DevToolsBanner::disable_requested);
|
|
layout->addWidget(disable_button);
|
|
}
|
|
|
|
void DevToolsBanner::set_port(u16 port)
|
|
{
|
|
m_label->setText(qformatted("DevTools is enabled on port {}", port));
|
|
}
|
|
|
|
bool DevToolsBanner::event(QEvent* event)
|
|
{
|
|
if (event->type() == QEvent::PaletteChange)
|
|
update_chrome_style();
|
|
|
|
return QWidget::event(event);
|
|
}
|
|
|
|
void DevToolsBanner::update_chrome_style()
|
|
{
|
|
if (m_is_updating_chrome_style)
|
|
return;
|
|
|
|
m_is_updating_chrome_style = true;
|
|
setStyleSheet(ChromeStyle::devtools_banner_style_sheet(palette()));
|
|
m_is_updating_chrome_style = false;
|
|
}
|
|
|
|
}
|