fix: use custom titlebar only with X11

This commit is contained in:
dijunkun
2026-07-31 17:34:32 +08:00
parent d85a00a73b
commit 0c6e97ace6
2 changed files with 11 additions and 4 deletions
+10 -4
View File
@@ -970,6 +970,14 @@ bool GuiApplication::InitializeSDL() {
LOG_ERROR("SDL initialization failed: {}", SDL_GetError()); LOG_ERROR("SDL initialization failed: {}", SDL_GetError());
return false; return false;
} }
#if defined(__linux__) && !defined(__APPLE__)
const char* active_video_driver = SDL_GetCurrentVideoDriver();
// X11 permits the manual move/position operations used by the frameless
// main window. Keep native Wayland decorations as a compatibility fallback.
use_x11_custom_titlebar_ =
active_video_driver != nullptr &&
std::strcmp(active_video_driver, "x11") == 0;
#endif
if (const SDL_DisplayMode* mode = SDL_GetCurrentDisplayMode(0)) { if (const SDL_DisplayMode* mode = SDL_GetCurrentDisplayMode(0)) {
screen_width_ = mode->w; screen_width_ = mode->w;
@@ -1004,10 +1012,8 @@ void GuiApplication::InitializeUi() {
#if _WIN32 #if _WIN32
ui_->main->set_custom_titlebar(true); ui_->main->set_custom_titlebar(true);
#elif defined(__linux__) #elif defined(__linux__)
if (use_xwayland_gui_) { ui_->main->set_custom_titlebar(use_x11_custom_titlebar_);
ui_->main->set_custom_titlebar(true); ui_->main->set_wayland_titlebar(use_xwayland_gui_);
ui_->main->set_wayland_titlebar(true);
}
#endif #endif
std::vector<ui::ReleaseNoteBlock> release_note_blocks; std::vector<ui::ReleaseNoteBlock> release_note_blocks;
for (const auto& parsed : ParseReleaseNotesMarkdownForSlint(release_notes_)) { for (const auto& parsed : ParseReleaseNotesMarkdownForSlint(release_notes_)) {
+1
View File
@@ -66,6 +66,7 @@ private:
std::unique_ptr<SlintUi> ui_; std::unique_ptr<SlintUi> ui_;
#if defined(__linux__) && !defined(__APPLE__) #if defined(__linux__) && !defined(__APPLE__)
bool use_xwayland_gui_ = false; bool use_xwayland_gui_ = false;
bool use_x11_custom_titlebar_ = false;
#endif #endif
}; };