Skip to content

i forced winforms to do themes

Choose a tag to compare

@Gameknight963 Gameknight963 released this 05 Apr 22:14
· 366 commits to main since this release

Plugin API Version: 0.7.0

Everything was split into namespaces and now there's themes so this and 0.6.0 are probably not compatible

changes

  • 'themes' section in settings:

    • System
    • Light
    • Dark
    • Blurred background
    • Acrylic
    • Extended frame
    • Extended frame (dark)
  • DwmApi wrapper using P/Invoke

  • Code cleanups

  • a class called ThemeableForm that inherits from Form. If you're making a plugin with winforms UI, all you need to do is inherit from this class and your form theme automatically

  • Custom Messagebox implementation CoolMessageBox that inherits from ThemeableForm, in the namespace launcherdotnet.Launcher.Forms. To use it, just do CoolMessageBox.Show(text, caption, buttons, icon). I did my best to make this almost identical to the Windows MessageBox.

  • Custom Inputbox implementation CoolInputBox that that inherits from ThemeableForm, also in launcherdotnet.Launcher.Forms. To use it, do CoolInputBox.Prompt(prompt, caption, defaultResponse, placeholder).

    Note that unlike the Visual Basic Interaction.InputBox, CoolInputBox returns null string if the cancel button is clicked, in order to be able to distinguish between user putting empty string and user pressing cancel.
    Also placeholder text is new

  • Changed the text of "Install..." button to "Modify..." for clarity

  • Added searchbar

  • Add keyboard shortcuts

    • Ctrl + Q → Close app
    • Alt + 1 through Alt + 9 → Select visible index 0–8
    • Up Arrow / Down Arrow → Focus games view
    • Right Arrow → Focus Launch button
    • Delete → Delete selected game
    • F2 → Rename selected game
    • Ctrl + O → Open selected game folder
    • Ctrl + L / Ctrl + F → Focus search box
    • NumPad 0 → Focus search box
    • Ctrl + R / F5 → Refresh games view
    • Ctrl + I → Install game
    • Ctrl + , → Open settings
    • Enter → Launch selected game
    • Escape → Clear search and return focus to games view
  • Improved text rendering behavior, since transparent forms case anti-alias issues

  • Added logic to prevent re-applying theme inconsistently

  • Added design-time safety checks to avoid crashes in Visual Studio designer

  • Improved TabControl rendering using custom drawing

  • Improved ListView owner-draw handling and ensured it doesn’t double-subscribe events

  • Fixed anchoring issues in settings UI

  • Fixed updater incorrectly showing updates for newer versions

  • Improved CoolMessageBox sizing (caption width + tighter button margins)

  • Added CoolMessageBox sound playback

  • Optimized search performance via LauncherData caching

  • Improved game selection handling (index-based selection via Alt + number)

  • Throw on unexpected deletion failure

  • Improved data integrity checks when reading/writing launcher data

  • Improved application startup behavior

  • Added handling to keep theme changes consistent across multiple components

  • Fixed button border rendering inconsistencies across themes

  • Refactored project structure

  • Removed unused using directives (most of them)

Full Changelog: v0.5.1-alpha...v0.6.0-alpha