mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-11 05:25:32 +03:00
Ladybird: Ensure hamburger menu is placed within the browser window
This commit is contained in:
parent
e10721f1b5
commit
563d392db7
Notes:
sideshowbarker
2024-07-16 23:13:25 +09:00
Author: https://github.com/MacDue Commit: https://github.com/SerenityOS/serenity/commit/563d392db7 Pull-request: https://github.com/SerenityOS/serenity/pull/24257
@ -46,6 +46,28 @@ static QIcon const& app_icon()
|
||||
return icon;
|
||||
}
|
||||
|
||||
class HamburgerMenu : public QMenu {
|
||||
public:
|
||||
using QMenu::QMenu;
|
||||
virtual ~HamburgerMenu() override = default;
|
||||
|
||||
virtual void showEvent(QShowEvent*) override
|
||||
{
|
||||
if (!isVisible())
|
||||
return;
|
||||
auto* browser_window = verify_cast<BrowserWindow>(parentWidget());
|
||||
if (!browser_window)
|
||||
return;
|
||||
auto* current_tab = browser_window->current_tab();
|
||||
if (!current_tab)
|
||||
return;
|
||||
// Ensure the hamburger menu placed within the browser window.
|
||||
auto* hamburger_button = current_tab->hamburger_button();
|
||||
auto button_top_right = hamburger_button->mapToGlobal(hamburger_button->rect().bottomRight());
|
||||
move(button_top_right - QPoint(rect().width(), 0));
|
||||
}
|
||||
};
|
||||
|
||||
BrowserWindow::BrowserWindow(Vector<URL::URL> const& initial_urls, WebView::CookieJar& cookie_jar, WebContentOptions const& web_content_options, StringView webdriver_content_ipc_path)
|
||||
: m_tabs_container(new TabWidget(this))
|
||||
, m_cookie_jar(cookie_jar)
|
||||
@ -72,7 +94,7 @@ BrowserWindow::BrowserWindow(Vector<URL::URL> const& initial_urls, WebView::Cook
|
||||
});
|
||||
}
|
||||
|
||||
m_hamburger_menu = new QMenu(this);
|
||||
m_hamburger_menu = new HamburgerMenu(this);
|
||||
|
||||
if (!Settings::the()->show_menubar())
|
||||
menuBar()->hide();
|
||||
|
@ -93,6 +93,8 @@ public:
|
||||
return *m_inspect_dom_node_action;
|
||||
}
|
||||
|
||||
Tab* current_tab() const { return m_current_tab; }
|
||||
|
||||
public slots:
|
||||
void device_pixel_ratio_changed(qreal dpi);
|
||||
void tab_title_changed(int index, QString const&);
|
||||
|
@ -58,6 +58,8 @@ public:
|
||||
|
||||
void update_navigation_buttons_state();
|
||||
|
||||
QToolButton* hamburger_button() const { return m_hamburger_button; }
|
||||
|
||||
public slots:
|
||||
void focus_location_editor();
|
||||
void location_edit_return_pressed();
|
||||
|
Loading…
Reference in New Issue
Block a user