Skip to content

GacUI 1.4.1.1

Latest

Choose a tag to compare

@vczh vczh released this 03 Sep 21:14
· 4 commits to master since this release

GacUI 1.4.1.1

GacUI / C++ Interoperable Script Engine (Apache License 2.0 with extra conditions)

Website for this project: https://vczh-libraries.github.io/ -> http://www.gaclib.net/

This repository contains the latest release for the GacUI project, including packed library source codes, development tools, demos and documents. Complete source code can be accessed in https://github.com/vczh-libraries .

Prompts and necessary supporting files in .github folder will be iterating on each release.

Version

This version is a sub release towards GacUI 2.0.
Please check out 1.0-rc-3 for GacUI 1.0.

New Feature

  • GacUI
    • Support Mouse4/Mouse5.
    • Support Win/Super/Command as part of shortcut keys.
    • Port to Linux (wGac), macOS (iGac), GacJS.

Breaking Changes

NOTE Only XML tag changes would affect end users, others are for platform maintainers. From now on listening to a mouse event would need e.g. <ev.mouseDown/> instead of <ev.leftButtonDown/>.

  • GuiGraphicsEventReceiver in Source/Application/GraphicsCompositions/GuiGraphicsEventReceiver.h:
    • Remove leftButtonDown, middleButtonDown, and rightButtonDown; add mouseDown.
    • Remove leftButtonUp, middleButtonUp, and rightButtonUp; add mouseUp.
    • Remove leftButtonDoubleClick, middleButtonDoubleClick, and rightButtonDoubleClick; add mouseDoubleClick.
    • The same event names change on reflected GuiGraphicsComposition objects and in GacUI Resource XML. Filter arguments.button when a handler should respond to only one button.
  • Add NativeMouseButton in Source/NativeWindow/GuiNativeWindow.h, with Left, Middle, Right, Mouse4, and Mouse5.
    • Add GuiMouseEventArgs::button, defaulting to NativeMouseButton::Left. GuiItemMouseEventArgs and GuiNodeMouseEventArgs inherit it.
    • Existing button-specific Item events on GuiListControl and Node events on GuiVirtualTreeListControl are kept.
  • INativeWindowListener in Source/NativeWindow/GuiNativeWindow.h:
    • Remove LeftButtonDown, MiddleButtonDown, and RightButtonDown; add MouseDown(NativeMouseButton button, const NativeWindowMouseInfo& info).
    • Remove LeftButtonUp, MiddleButtonUp, and RightButtonUp; add MouseUp(NativeMouseButton button, const NativeWindowMouseInfo& info).
    • Remove LeftButtonDoubleClick, MiddleButtonDoubleClick, and RightButtonDoubleClick; add MouseDoubleClick(NativeMouseButton button, const NativeWindowMouseInfo& info).
  • Add bool osSuper = false to WindowMouseInfo_<T>, NativeWindowKeyInfo, and NativeWindowCharInfo in Source/NativeWindow/GuiNativeWindow.h.
    • WindowMouseInfo and NativeWindowMouseInfo are aliases of WindowMouseInfo_<T>. GuiMouseEventArgs, GuiKeyEventArgs, and GuiCharEventArgs inherit the new field from their input-info base types.
    • INativeWindowListener::MouseMoving, HorizontalWheel, and VerticalWheel keep their signatures and receive the new state in info.osSuper.
  • IGuiShortcutKeyManager and GuiShortcutKeyManager in Source/Application/GraphicsHost/GuiGraphicsHost_ShortcutKey.h:
    • Add bool osSuper between alt and key to TryGetShortcut, CreateNewShortcut, and CreateShortcutIfNotExist. The modifier/key arguments are now (bool ctrl, bool shift, bool alt, bool osSuper, VKEY key).
    • Add the same parameter to GuiShortcutKeyManager::CreateShortcutInternal, the GuiShortcutKeyItem constructor, and its CanActivate overload taking separate modifiers.
    • Add bool& _osSuper between _alt and _key to GuiShortcutKeyItem::ReadKeyConfig.
    • Pass false for shortcuts that do not require Win/Command/Super.
  • Add GuiToolstripCommand::ShortcutBuilder::osSuper, defaulting to false, in Source/Controls/ToolstripPackage/GuiToolstripCommand.h. The SHORTCUT parser accepts Win, Command, and Super as aliases for this modifier.
  • Native services in Source/NativeWindow/GuiNativeWindow.h:
    • Change INativeInputService::RegisterGlobalShortcutKey to (bool ctrl, bool shift, bool alt, bool osSuper, VKEY key).
    • Add the pure virtual method WString INativeResourceService::GetOSSuperKeyName(). Return Win on Windows, Command on macOS, and Super on Linux. GuiShortcutKeyItem::GetName() uses this label.
  • Remote protocol in Source/PlatformProviders/Remote/Protocol/Protocol_IO.txt and Protocol_Controller.txt:
    • Add Mouse4 and Mouse5 to schema enum IOMouseButton, and map it to NativeMouseButton. The generated C++ enum remoteprotocol::IOMouseButton is removed; use NativeMouseButton, including for IOMouseInfoWithButton::button.
    • Add osSuper to IOMouseInfo, IOKeyInfo, IOCharInfo, and GlobalShortcutKey.
    • Add osSuperKeyName to ControllerGlobalConfig for the renderer's canonical modifier label.
    • These changes break wire compatibility. Update the GacUI core, native remote renderers, and GacJS to the same schema.