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/>.
GuiGraphicsEventReceiverinSource/Application/GraphicsCompositions/GuiGraphicsEventReceiver.h:- Remove
leftButtonDown,middleButtonDown, andrightButtonDown; addmouseDown. - Remove
leftButtonUp,middleButtonUp, andrightButtonUp; addmouseUp. - Remove
leftButtonDoubleClick,middleButtonDoubleClick, andrightButtonDoubleClick; addmouseDoubleClick. - The same event names change on reflected
GuiGraphicsCompositionobjects and in GacUI Resource XML. Filterarguments.buttonwhen a handler should respond to only one button.
- Remove
- Add
NativeMouseButtoninSource/NativeWindow/GuiNativeWindow.h, withLeft,Middle,Right,Mouse4, andMouse5.- Add
GuiMouseEventArgs::button, defaulting toNativeMouseButton::Left.GuiItemMouseEventArgsandGuiNodeMouseEventArgsinherit it. - Existing button-specific Item events on
GuiListControland Node events onGuiVirtualTreeListControlare kept.
- Add
INativeWindowListenerinSource/NativeWindow/GuiNativeWindow.h:- Remove
LeftButtonDown,MiddleButtonDown, andRightButtonDown; addMouseDown(NativeMouseButton button, const NativeWindowMouseInfo& info). - Remove
LeftButtonUp,MiddleButtonUp, andRightButtonUp; addMouseUp(NativeMouseButton button, const NativeWindowMouseInfo& info). - Remove
LeftButtonDoubleClick,MiddleButtonDoubleClick, andRightButtonDoubleClick; addMouseDoubleClick(NativeMouseButton button, const NativeWindowMouseInfo& info).
- Remove
- Add
bool osSuper = falsetoWindowMouseInfo_<T>,NativeWindowKeyInfo, andNativeWindowCharInfoinSource/NativeWindow/GuiNativeWindow.h.WindowMouseInfoandNativeWindowMouseInfoare aliases ofWindowMouseInfo_<T>.GuiMouseEventArgs,GuiKeyEventArgs, andGuiCharEventArgsinherit the new field from their input-info base types.INativeWindowListener::MouseMoving,HorizontalWheel, andVerticalWheelkeep their signatures and receive the new state ininfo.osSuper.
IGuiShortcutKeyManagerandGuiShortcutKeyManagerinSource/Application/GraphicsHost/GuiGraphicsHost_ShortcutKey.h:- Add
bool osSuperbetweenaltandkeytoTryGetShortcut,CreateNewShortcut, andCreateShortcutIfNotExist. The modifier/key arguments are now(bool ctrl, bool shift, bool alt, bool osSuper, VKEY key). - Add the same parameter to
GuiShortcutKeyManager::CreateShortcutInternal, theGuiShortcutKeyItemconstructor, and itsCanActivateoverload taking separate modifiers. - Add
bool& _osSuperbetween_altand_keytoGuiShortcutKeyItem::ReadKeyConfig. - Pass
falsefor shortcuts that do not require Win/Command/Super.
- Add
- Add
GuiToolstripCommand::ShortcutBuilder::osSuper, defaulting tofalse, inSource/Controls/ToolstripPackage/GuiToolstripCommand.h. TheSHORTCUTparser acceptsWin,Command, andSuperas aliases for this modifier. - Native services in
Source/NativeWindow/GuiNativeWindow.h:- Change
INativeInputService::RegisterGlobalShortcutKeyto(bool ctrl, bool shift, bool alt, bool osSuper, VKEY key). - Add the pure virtual method
WString INativeResourceService::GetOSSuperKeyName(). ReturnWinon Windows,Commandon macOS, andSuperon Linux.GuiShortcutKeyItem::GetName()uses this label.
- Change
- Remote protocol in
Source/PlatformProviders/Remote/Protocol/Protocol_IO.txtandProtocol_Controller.txt:- Add
Mouse4andMouse5to schema enumIOMouseButton, and map it toNativeMouseButton. The generated C++ enumremoteprotocol::IOMouseButtonis removed; useNativeMouseButton, including forIOMouseInfoWithButton::button. - Add
osSupertoIOMouseInfo,IOKeyInfo,IOCharInfo, andGlobalShortcutKey. - Add
osSuperKeyNametoControllerGlobalConfigfor the renderer's canonical modifier label. - These changes break wire compatibility. Update the GacUI core, native remote renderers, and GacJS to the same schema.
- Add