win32 build: version string, GTK_CSD=0, wm-hints in vcxproj#1
Merged
Conversation
meson.build's marketing version may carry a pre-release suffix like "3.0.0~alpha1". The build template previously joined the dotted parts back into a string, dropping the suffix everywhere it landed: PACKAGE_VERSION (About dialog, user-agent, tarball name) and the StringFileInfo block (Windows file-properties dialog). Split into two values inside version-template.ps1: $versionFull keeps the full marketing string for those human-readable fields, while $versionParts is the digits-only form for the numeric Win32 VERSIONINFO FILEVERSION/PRODUCTVERSION quad that rejects non-numeric components. poxchat.sln reorder is VS-autosave noise from opening the solution. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
GTK's client-side title bar confuses Windows window managers that key off the real WM_NCHITTEST frame — FancyZones can't snap a CSD window, and the built-in Snap tiling misreads its drag edges. With CSD off all GTK surfaces (main window, dialogs, popovers) get a real native frame from Windows; FancyZones still ignores owned child windows by default, so the only realistic snap target is whichever top-level opens first (typically the Network List on startup). Set before the first gtk_init() so GTK picks it up during init; pass override=TRUE so the build behavior is consistent regardless of user environment. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Rubin's "persist sticky + window position" commit (7b570e9 on origin) introduced src/fe-gtk/wm-hints.{c,h} but only added them to the meson build — the VS solution didn't compile wm-hints.c, so maingui.obj came out with six unresolved externals (wm_hints_supports_sticky, get/set _sticky, get_geometry, set_position, position_on_screen). The C source is already Windows-safe: every X11-specific path is gated on GDK_WINDOWING_X11, so on Win32 these resolve to harmless no-op stubs (except position_on_screen, which uses cross-platform GdkMonitor APIs). The persistence feature itself is therefore dead on Windows until a GetWindowPlacement/SetWindowPlacement backend lands; this commit just restores the build. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Three Windows-build fixes:
3.0.0~alpha1. The build template was joining the dotted parts back into a string, dropping the suffix from PACKAGE_VERSION (About dialog, user-agent, tarball name) and the StringFileInfo block (Windows file-properties dialog). Split into$versionFull(full marketing string, used wherever a human-readable version belongs) and$versionParts(digits-only quad for Win32 VERSIONINFO's FILEVERSION/PRODUCTVERSION, which rejects non-numeric components).g_setenvis called beforegtk_init()withoverride=TRUEso the build behavior is consistent.src/fe-gtk/wm-hints.{c,h}but only wired them up in the meson build. VS came out with six unresolved externals in maingui.obj (wm_hints_supports_sticky, get/set_sticky, get_geometry, set_position, position_on_screen). The C source is already Windows-safe (X11 paths gated on GDK_WINDOWING_X11), so the Win32 build just needs the file in the vcxproj — the persistence feature itself is dead on Windows until a GetWindowPlacement backend lands, but the build at least links.Test plan
🤖 Generated with Claude Code