refactor(framework): clean up TU_WidgetLayoutView inline funcs (they're not useful)

This commit is contained in:
☙◦ The Tablet ❀ GamerGirlandCo ◦❧ 2026-01-14 23:33:56 -05:00
parent 557b2f1808
commit 06c0a4ad6f
Signed by: tablet
GPG Key ID: 924A5F6AF051E87C

View File

@ -315,180 +315,6 @@ private:
static int _uniqueId; // Static counter for unique names static int _uniqueId; // Static counter for unique names
}; };
// Note: AC_ResponderTemplateWidget<T> is a template class defined in Toon Boom
// DLLs that combines a QWidget subclass with AC_Responder capabilities. Memory
// layout for AC_ResponderTemplateWidget<QWidget>:
// - +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<QWidget>) ≈ 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<QWidget> (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<QWidget> / 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<QWidget>)
// +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<QWidget> 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<QWidget> 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<TULayoutView *>(reinterpret_cast<char *>(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<TUWidgetLayoutView *>(reinterpret_cast<char *>(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<QWidget *>(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<QWidget> 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<AC_Manager **>(reinterpret_cast<char *>(view) - 56);
}
/** /**
* @brief Container widget that holds 1-2 TULayoutView instances * @brief Container widget that holds 1-2 TULayoutView instances
* *