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.
54 lines
1.6 KiB
C++
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 };
|
|
};
|
|
|
|
}
|