ladybird/UI/Qt/BookmarksBar.h
Andreas Kling 328d89f3c1 UI/Qt: Draw custom browser window chrome
Add shared chrome styling helpers and use them to paint the Linux
browser tab strip and surrounding toolbar widgets. Make the browser
window frameless on Qt so the tabs, toolbar, and window controls can
share one integrated chrome surface.
2026-05-26 01:18:51 +02:00

54 lines
1.6 KiB
C++

/*
* Copyright (c) 2026, Tim Flynn <trflynn89@ladybird.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/Optional.h>
#include <AK/String.h>
#include <LibWebView/Forward.h>
#include <QToolBar>
namespace Ladybird {
class BookmarksBar final : public QToolBar {
Q_OBJECT
public:
explicit BookmarksBar(QWidget* parent = nullptr);
void rebuild();
String const& selected_bookmark_menu_item_id() const { return m_selected_bookmark_menu_item_id; }
Optional<String> const& selected_bookmark_menu_target_folder_id() const { return m_selected_bookmark_menu_target_folder_id; }
void show_context_menu(QPoint, Optional<WebView::BookmarkItem const&>, Optional<String const&> target_folder_id);
private:
virtual bool event(QEvent*) override;
virtual bool eventFilter(QObject* object, QEvent* event) override;
bool handle_left_mouse_click(QMouseEvent*, QObject*);
bool handle_middle_mouse_click(QMouseEvent*, QObject*);
bool handle_right_mouse_click(QMouseEvent*, QObject*);
void extract_item_properties(QObject*);
void update_chrome_style();
QMenu& bookmarks_bar_context_menu();
QMenu& bookmark_context_menu();
QMenu& bookmark_folder_context_menu();
QMenu* m_bookmarks_bar_context_menu { nullptr };
QMenu* m_bookmark_context_menu { nullptr };
QMenu* m_bookmark_folder_context_menu { nullptr };
String m_selected_bookmark_menu_item_id;
QString m_selected_bookmark_menu_item_type;
Optional<String> m_selected_bookmark_menu_target_folder_id;
bool m_is_updating_chrome_style { false };
};
}