Add option to place window buttons on left side for Linux (#12831)

init
This commit is contained in:
yw4z
2026-04-24 11:51:00 +03:00
committed by GitHub
parent a5171b902d
commit 66eb5fc4f4
3 changed files with 43 additions and 1 deletions

View File

@@ -523,6 +523,11 @@ void AppConfig::set_defaults()
set_bool("installed_networking", false);
}
#ifdef __linux__
if (get("window_buttons_on_left").empty())
set_bool("window_buttons_on_left", false);
#endif
// Remove legacy window positions/sizes
erase("app", "main_frame_maximized");
erase("app", "main_frame_pos");

View File

@@ -236,7 +236,37 @@ void BBLTopbar::Init(wxFrame* parent)
wxInitAllImageHandlers();
this->AddSpacer(5);
bool window_btns_on_left = false;
#ifdef __linux__
window_btns_on_left = wxGetApp().app_config->get("window_buttons_on_left") == "true";
if(window_btns_on_left){
wxBitmap close_bitmap = create_scaled_bitmap("topbar_close", nullptr, TOPBAR_ICON_SIZE);
wxAuiToolBarItem* close_btn = this->AddTool(wxID_CLOSE_FRAME, "", close_bitmap);
this->AddSpacer(FromDIP(4));
maximize_bitmap = create_scaled_bitmap("topbar_max", nullptr, TOPBAR_ICON_SIZE);
window_bitmap = create_scaled_bitmap("topbar_win", nullptr, TOPBAR_ICON_SIZE);
if (m_frame->IsMaximized()) {
maximize_btn = this->AddTool(wxID_MAXIMIZE_FRAME, "", window_bitmap);
}
else {
maximize_btn = this->AddTool(wxID_MAXIMIZE_FRAME, "", maximize_bitmap);
}
this->AddSpacer(FromDIP(4));
wxBitmap iconize_bitmap = create_scaled_bitmap("topbar_min", nullptr, TOPBAR_ICON_SIZE);
wxAuiToolBarItem* iconize_btn = this->AddTool(wxID_ICONIZE_FRAME, "", iconize_bitmap);
this->AddSpacer(15);
}
#endif
if(!window_btns_on_left)
this->AddSpacer(5);
/*wxBitmap logo_bitmap = create_scaled_bitmap("topbar_logo", nullptr, TOPBAR_ICON_SIZE);
wxAuiToolBarItem* logo_item = this->AddTool(ID_LOGO, "", logo_bitmap);
@@ -312,6 +342,7 @@ void BBLTopbar::Init(wxFrame* parent)
//this->AddSeparator();
//this->AddSpacer(FromDIP(4));
if(!window_btns_on_left){
wxBitmap iconize_bitmap = create_scaled_bitmap("topbar_min", nullptr, TOPBAR_ICON_SIZE);
wxAuiToolBarItem* iconize_btn = this->AddTool(wxID_ICONIZE_FRAME, "", iconize_bitmap);
@@ -330,6 +361,7 @@ void BBLTopbar::Init(wxFrame* parent)
wxBitmap close_bitmap = create_scaled_bitmap("topbar_close", nullptr, TOPBAR_ICON_SIZE);
wxAuiToolBarItem* close_btn = this->AddTool(wxID_CLOSE_FRAME, "", close_bitmap);
}
Realize();
// m_toolbar_h = this->GetSize().GetHeight();

View File

@@ -1360,6 +1360,11 @@ void PreferencesDialog::create_items()
auto item_show_splash_scr = create_item_checkbox(_L("Show splash screen"), _L("Show the splash screen during startup."), "show_splash_screen");
g_sizer->Add(item_show_splash_scr);
#ifdef __linux__
auto item_window_button_pos = create_item_checkbox(_L("Use window buttons on left side"), "", "window_buttons_on_left", _L("(Requires restart)"));
g_sizer->Add(item_window_button_pos);
#endif
//auto item_hints = create_item_checkbox(_L("Show \"Daily Tips\" after start"), page, _L("If enabled, useful hints are displayed at startup."), "show_daily_tips");
//g_sizer->Add(item_hints);