From 06c0a4ad6f931ab1093896912ff9d1aa9309c7d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=98=99=E2=97=A6=20The=20Tablet=20=E2=9D=80=20GamerGirla?= =?UTF-8?q?ndCo=20=E2=97=A6=E2=9D=A7?= Date: Wed, 14 Jan 2026 23:33:56 -0500 Subject: [PATCH] refactor(framework): clean up `TU_WidgetLayoutView` inline funcs (they're not useful) --- .../public/toon_boom/toon_boom_layout.hpp | 174 ------------------ 1 file changed, 174 deletions(-) diff --git a/framework/include/public/toon_boom/toon_boom_layout.hpp b/framework/include/public/toon_boom/toon_boom_layout.hpp index 23ca4df..af88486 100644 --- a/framework/include/public/toon_boom/toon_boom_layout.hpp +++ b/framework/include/public/toon_boom/toon_boom_layout.hpp @@ -315,180 +315,6 @@ private: static int _uniqueId; // Static counter for unique names }; -// Note: AC_ResponderTemplateWidget is a template class defined in Toon Boom -// DLLs that combines a QWidget subclass with AC_Responder capabilities. Memory -// layout for AC_ResponderTemplateWidget: -// - +0x00: vptr (QObject) -// - +0x10: vptr (QPaintDevice) -// - +0x18-0x27: QWidget members -// - +0x28: vptr (AC_ResponderTemplateWidget) -// - +0x30: AC_Manager* m_actionManager -// - +0x38: QString m_responderIdentity -// - +0x50: QString m_responderDescription -// sizeof(AC_ResponderTemplateWidget) ≈ 0x68 (104 bytes) on x64 - -// ============================================================================= -// TUWidgetLayoutView -// ============================================================================= -// -// TUWidgetLayoutView is a concrete layout view class implemented in -// ToonBoomLayout.dll. It combines a QWidget (for UI display) with both -// AC_Responder capabilities (for action handling) and TULayoutView -// functionality (for the layout system). -// -// INHERITANCE HIERARCHY: -// QWidget -// └── AC_ResponderTemplateWidget (multiple inheritance) -// ├── QWidget base -// └── AC_ResponderTemplate (mixin at +0x28) -// └── TUWidgetLayoutView -// └── TULayoutView (embedded at +0x68) -// -// VTABLE STRUCTURE (4 vtables due to multiple inheritance): -// +0x00: vptr[0] - QObject vtable (includes QWidget virtuals) -// +0x10: vptr[1] - QPaintDevice vtable -// +0x28: vptr[2] - AC_ResponderTemplateWidget / AC_Responder vtable -// +0x68: vptr[3] - TULayoutView vtable -// -// MEMORY LAYOUT (x64 MSVC, sizeof = 0x120 / 288 bytes): -// +0x00: vptr (QObject) -// +0x08: QObjectData* d_ptr (QObject) -// +0x10: vptr (QPaintDevice) -// +0x18: [QWidget internal data ~16 bytes] -// +0x28: vptr (AC_ResponderTemplateWidget) -// +0x30: AC_Manager* m_actionManager -// +0x38: QString m_responderIdentity (24 bytes) -// +0x50: QString m_responderDescription (24 bytes) -// +0x68: vptr (TULayoutView) ─┐ -// +0x70: QString m_internalName │ TULayoutView -// +0x88: LAY_ToolbarInfo m_toolbarInfo │ embedded -// +0xF0: AC_Menu* m_menuByType[2] │ (184 bytes) -// +0x100: bool m_initializedFromCopy │ -// +0x108: QString m_caption ─┘ -// -// KEY VIRTUAL METHOD OVERRIDES IN TUWIDGETLAYOUTVIEW: -// From TULayoutView: -// - widget() - pure virtual, not implemented (returns _purecall) -// - getWidget() const/non-const - returns (this - 104), i.e., the QWidget* -// - triggerMenuChanged() - emits menuChanged() signal on QWidget -// - isTULayoutView() - empty implementation (RTTI marker) -// From QWidget: -// - mousePressEvent() - accepts event and sets focus (Qt::MouseFocusReason) -// - metaObject(), qt_metacast(), qt_metacall() - Qt meta-object support -// -// SIGNALS (Qt): -// - menuChanged() - emitted by triggerMenuChanged() -// -// CONSTRUCTOR PARAMETERS: -// TUWidgetLayoutView(AC_Manager* manager, const QString& objectName, -// QWidget* parent, const char* className, -// Qt::WindowFlags flags) -// -// CONSTRUCTION SEQUENCE: -// 1. AC_ResponderTemplateWidget ctor (parent, flags, objectName) -// 2. TULayoutView default ctor (at this+104) -// 3. Set all 4 vtables to TUWidgetLayoutView vtables -// 4. QWidget::setMinimumWidth(150) -// 5. If parent and manager: call initActionManager(manager) -// Else: store manager at +0x30 -// -// DESTRUCTION SEQUENCE: -// 1. Reset vtables -// 2. Destroy TULayoutView::m_caption at +0x108 -// 3. Destroy TULayoutView::m_toolbarInfo at +0x88 -// 4. Destroy TULayoutView::m_internalName at +0x70 -// 5. Call AC_ResponderTemplateWidget dtor -// -// EXPORTED METHODS (ToonBoomLayout.dll): -// - ??0TUWidgetLayoutView@@QEAA@... - Constructor -// - ??1TUWidgetLayoutView@@UEAA@XZ - Destructor -// - ?getWidget@TUWidgetLayoutView@@UEAA/UEBAPEAVQWidget@@XZ - Get QWidget* -// - ?mousePressEvent@TUWidgetLayoutView@@MEAAXPEAVQMouseEvent@@@Z -// - ?triggerMenuChanged@TUWidgetLayoutView@@MEAAXXZ -// - ?menuChanged@TUWidgetLayoutView@@QEAAXXZ - Qt signal -// - ?metaObject/qt_metacast/qt_metacall - Qt meta-object methods -// - ?tr@TUWidgetLayoutView@@SA?AVQString@@PEBD0H@Z - Translation -// -// USAGE NOTES: -// Since TUWidgetLayoutView has external base classes, you cannot directly -// subclass it in user code. Instead: -// 1. Obtain TUWidgetLayoutView* from the layout system -// 2. Use helper functions to convert between pointer types -// 3. Access TULayoutView virtuals through TULayoutView_getLayoutView() -// 4. Access QWidget through TUWidgetLayoutView_getWidget() -// -// @see TULayoutView_getActionManager() for accessing AC_Manager* -// @see docs/TUWidgetLayoutView_Analysis.md for detailed analysis -// ============================================================================= - -// Forward declaration - implemented in ToonBoomLayout.dll -// Use the helper functions below for pointer conversion -class TUWidgetLayoutView; - -/** - * @brief Convert TUWidgetLayoutView* to its embedded TULayoutView* - * @param widget Pointer to TUWidgetLayoutView - * @return Pointer to embedded TULayoutView at offset +104 - */ -inline TULayoutView * -TUWidgetLayoutView_getLayoutView(TUWidgetLayoutView *widget) { - return reinterpret_cast(reinterpret_cast(widget) + - 104); -} - -/** - * @brief Convert TULayoutView* back to containing TUWidgetLayoutView* - * @param view Pointer to TULayoutView (must be embedded in TUWidgetLayoutView) - * @return Pointer to containing TUWidgetLayoutView at offset -104 - */ -inline TUWidgetLayoutView * -TULayoutView_getWidgetLayoutView(TULayoutView *view) { - return reinterpret_cast(reinterpret_cast(view) - - 104); -} - -/** - * @brief Get the QWidget* from a TUWidgetLayoutView* - * @param widget Pointer to TUWidgetLayoutView - * @return The QWidget* (same address, different type) - */ -inline QWidget *TUWidgetLayoutView_getWidget(TUWidgetLayoutView *widget) { - return reinterpret_cast(widget); -} - -/** - * @brief Get AC_Manager* from a TULayoutView* embedded in TUWidgetLayoutView - * - * This function provides access to the AC_Manager instance for views that - * inherit from TUWidgetLayoutView. The AC_Manager is stored in the - * AC_ResponderTemplateWidget base class at offset +48, which is - * offset -56 from the embedded TULayoutView*. - * - * @note This only works for TULayoutView instances that are embedded in - * TUWidgetLayoutView. Direct TULayoutView subclasses do NOT have - * an AC_Manager member. - * - * @param view Pointer to TULayoutView (must be embedded in TUWidgetLayoutView) - * @return AC_Manager* or nullptr if invalid - * - * @code - * // Example usage in a toolbar() override: - * QDomElement MyView::toolbar() { - * AC_Manager* manager = TULayoutView_getActionManager(this); - * if (manager) { - * // Use manager->getToolbarElement(...) to get toolbar definition - * } - * return QDomElement(); - * } - * @endcode - */ -inline AC_Manager *TULayoutView_getActionManager(TULayoutView *view) { - // AC_Manager is at offset +48 in TUWidgetLayoutView - // TULayoutView is embedded at offset +104 in TUWidgetLayoutView - // So from TULayoutView*, AC_Manager** is at offset -56 (= 48 - 104) - return *reinterpret_cast(reinterpret_cast(view) - 56); -} - /** * @brief Container widget that holds 1-2 TULayoutView instances *