mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-17 09:16:11 +03:00
Merge pull request #2229 from tristan957/headerbar
apprt/gtk: use AdwHeaderBar if available
This commit is contained in:
@ -31,8 +31,9 @@ app: *App,
|
|||||||
window: *c.GtkWindow,
|
window: *c.GtkWindow,
|
||||||
|
|
||||||
/// The header bar for the window. This is possibly null since it can be
|
/// The header bar for the window. This is possibly null since it can be
|
||||||
/// disabled using gtk-titlebar.
|
/// disabled using gtk-titlebar. This is either an AdwHeaderBar or
|
||||||
header: ?*c.GtkHeaderBar,
|
/// GtkHeaderBar depending on if adw is enabled and linked.
|
||||||
|
header: ?*c.GtkWidget,
|
||||||
|
|
||||||
/// The notebook (tab grouping) for this window.
|
/// The notebook (tab grouping) for this window.
|
||||||
/// can be either c.GtkNotebook or c.AdwTabView.
|
/// can be either c.GtkNotebook or c.AdwTabView.
|
||||||
@ -101,19 +102,29 @@ pub fn init(self: *Window, app: *App) !void {
|
|||||||
// are decorated or not because we can have a keybind to toggle the
|
// are decorated or not because we can have a keybind to toggle the
|
||||||
// decorations.
|
// decorations.
|
||||||
if (app.config.@"gtk-titlebar") {
|
if (app.config.@"gtk-titlebar") {
|
||||||
const header: *c.GtkHeaderBar = @ptrCast(c.gtk_header_bar_new());
|
const header: *c.GtkWidget = if (self.isAdwWindow())
|
||||||
|
@ptrCast(c.adw_header_bar_new())
|
||||||
|
else
|
||||||
|
@ptrCast(c.gtk_header_bar_new());
|
||||||
|
|
||||||
{
|
{
|
||||||
const btn = c.gtk_menu_button_new();
|
const btn = c.gtk_menu_button_new();
|
||||||
c.gtk_widget_set_tooltip_text(btn, "Main Menu");
|
c.gtk_widget_set_tooltip_text(btn, "Main Menu");
|
||||||
c.gtk_menu_button_set_icon_name(@ptrCast(btn), "open-menu-symbolic");
|
c.gtk_menu_button_set_icon_name(@ptrCast(btn), "open-menu-symbolic");
|
||||||
c.gtk_menu_button_set_menu_model(@ptrCast(btn), @ptrCast(@alignCast(app.menu)));
|
c.gtk_menu_button_set_menu_model(@ptrCast(btn), @ptrCast(@alignCast(app.menu)));
|
||||||
c.gtk_header_bar_pack_end(@ptrCast(header), btn);
|
if (self.isAdwWindow())
|
||||||
|
c.adw_header_bar_pack_end(@ptrCast(header), btn)
|
||||||
|
else
|
||||||
|
c.gtk_header_bar_pack_end(@ptrCast(header), btn);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
const btn = c.gtk_button_new_from_icon_name("tab-new-symbolic");
|
const btn = c.gtk_button_new_from_icon_name("tab-new-symbolic");
|
||||||
c.gtk_widget_set_tooltip_text(btn, "New Tab");
|
c.gtk_widget_set_tooltip_text(btn, "New Tab");
|
||||||
c.gtk_header_bar_pack_end(@ptrCast(header), btn);
|
|
||||||
_ = c.g_signal_connect_data(btn, "clicked", c.G_CALLBACK(>kTabNewClick), self, null, c.G_CONNECT_DEFAULT);
|
_ = c.g_signal_connect_data(btn, "clicked", c.G_CALLBACK(>kTabNewClick), self, null, c.G_CONNECT_DEFAULT);
|
||||||
|
if (self.isAdwWindow())
|
||||||
|
c.adw_header_bar_pack_end(@ptrCast(header), btn)
|
||||||
|
else
|
||||||
|
c.gtk_header_bar_pack_end(@ptrCast(header), btn);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.header = header;
|
self.header = header;
|
||||||
|
Reference in New Issue
Block a user