Skip to content

Commit

Permalink
PathColumn : ABI compatibility workaround
Browse files Browse the repository at this point in the history
This avoids adding new member variables to PathColumn for Gaffer 1.5 and should be reverted on main.
  • Loading branch information
murraystevenson committed Feb 5, 2025
1 parent 78d2e64 commit c952758
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 10 deletions.
6 changes: 1 addition & 5 deletions include/GafferUI/PathColumn.h
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ class GAFFERUI_API PathColumn : public IECore::RefCounted, public Gaffer::Signal
};

explicit PathColumn( SizeMode sizeMode = Default );
~PathColumn();

/// Returns the current column size mode.
SizeMode getSizeMode() const;
Expand Down Expand Up @@ -199,11 +200,6 @@ class GAFFERUI_API PathColumn : public IECore::RefCounted, public Gaffer::Signal
ContextMenuSignal m_contextMenuSignal;
KeySignal m_keyPressSignal;
KeySignal m_keyReleaseSignal;
DragDropSignal m_dragEnterSignal;
DragDropSignal m_dragMoveSignal;
DragDropSignal m_dragLeaveSignal;
DragDropSignal m_dropSignal;
DragDropSignal m_dragEndSignal;

SizeMode m_sizeMode;

Expand Down
33 changes: 28 additions & 5 deletions src/GafferUI/PathColumn.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@

#include "fmt/format.h"

#include <memory>
#include <unordered_map>

using namespace IECore;
using namespace Gaffer;
using namespace GafferUI;
Expand All @@ -69,6 +72,12 @@ const std::string basisName( StandardCubicBasis basis )
return "Unknown";
}

std::unordered_map<const PathColumn *, std::unique_ptr<PathColumn::DragDropSignal>> g_dragEnterSignals;
std::unordered_map<const PathColumn *, std::unique_ptr<PathColumn::DragDropSignal>> g_dragMoveSignals;
std::unordered_map<const PathColumn *, std::unique_ptr<PathColumn::DragDropSignal>> g_dragLeaveSignals;
std::unordered_map<const PathColumn *, std::unique_ptr<PathColumn::DragDropSignal>> g_dropSignals;
std::unordered_map<const PathColumn *, std::unique_ptr<PathColumn::DragDropSignal>> g_dragEndSignals;

} // namespace

//////////////////////////////////////////////////////////////////////////
Expand All @@ -78,6 +87,20 @@ const std::string basisName( StandardCubicBasis basis )
PathColumn::PathColumn( SizeMode sizeMode )
: m_sizeMode( sizeMode )
{
g_dragEnterSignals[this] = std::make_unique<PathColumn::DragDropSignal>();
g_dragMoveSignals[this] = std::make_unique<PathColumn::DragDropSignal>();
g_dragLeaveSignals[this] = std::make_unique<PathColumn::DragDropSignal>();
g_dropSignals[this] = std::make_unique<PathColumn::DragDropSignal>();
g_dragEndSignals[this] = std::make_unique<PathColumn::DragDropSignal>();
}

PathColumn::~PathColumn()
{
g_dragEnterSignals.erase( this );
g_dragMoveSignals.erase( this );
g_dragLeaveSignals.erase( this );
g_dropSignals.erase( this );
g_dragEndSignals.erase( this );
}

PathColumn::SizeMode PathColumn::getSizeMode() const
Expand Down Expand Up @@ -127,27 +150,27 @@ PathColumn::KeySignal &PathColumn::keyReleaseSignal()

PathColumn::DragDropSignal &PathColumn::dragEnterSignal()
{
return m_dragEnterSignal;
return *( g_dragEnterSignals[this] );
}

PathColumn::DragDropSignal &PathColumn::dragMoveSignal()
{
return m_dragMoveSignal;
return *( g_dragMoveSignals[this] );
}

PathColumn::DragDropSignal &PathColumn::dragLeaveSignal()
{
return m_dragLeaveSignal;
return *( g_dragLeaveSignals[this] );
}

PathColumn::DragDropSignal &PathColumn::dropSignal()
{
return m_dropSignal;
return *( g_dropSignals[this] );
}

PathColumn::DragDropSignal &PathColumn::dragEndSignal()
{
return m_dragEndSignal;
return *( g_dragEndSignals[this] );
}

PathColumn::PathColumnSignal &PathColumn::instanceCreatedSignal()
Expand Down

0 comments on commit c952758

Please sign in to comment.