commit 3ab910ab3703909c4ff2bfde4f66deccee02d465
parent 41312fe037a52565130e91c11b6b182e116be2b5
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date: Sun, 14 Jul 2024 12:12:54 +0200
drag & drop / patch rename working in grid mode
Diffstat:
3 files changed, 22 insertions(+), 9 deletions(-)
diff --git a/source/jucePluginEditorLib/patchmanager/grid.cpp b/source/jucePluginEditorLib/patchmanager/grid.cpp
@@ -203,9 +203,16 @@ namespace jucePluginEditorLib::patchManager
repaint();
}
- juce::Rectangle<int> Grid::getEntryPosition(int _row, bool _relativeToComponentTopLeft)
+ juce::Rectangle<int> Grid::getEntryPosition(const int _row, bool _relativeToComponentTopLeft)
{
- // TODO
- return {};
+ juce::Rectangle<int> result;
+ result.setSize(m_itemWidth, m_itemHeight);
+
+ const auto x = _row / m_viewport.getVisibleRowCount();
+ const auto y = _row - x * m_viewport.getVisibleRowCount();
+
+ result.setPosition(x * m_itemWidth - m_viewport.getViewArea().getX(), y * m_itemHeight - m_viewport.getViewArea().getY());
+
+ return result;
}
}
diff --git a/source/jucePluginEditorLib/patchmanager/griditem.cpp b/source/jucePluginEditorLib/patchmanager/griditem.cpp
@@ -7,6 +7,7 @@ namespace jucePluginEditorLib::patchManager
GridItem::GridItem(Grid& _grid) : m_grid(_grid)
{
setInterceptsMouseClicks(false, true);
+ setSize(_grid.getItemWidth(), _grid.getItemHeight());
}
void GridItem::paint(juce::Graphics& _g)
@@ -22,12 +23,14 @@ namespace jucePluginEditorLib::patchManager
juce::Component::paint(_g);
}
- void GridItem::setItem(uint32_t _index, juce::Component* _component)
+ void GridItem::setItem(const uint32_t _index, juce::Component* _component)
{
m_index = _index;
m_item = _component;
if(m_item->getParentComponent() != this)
addAndMakeVisible(m_item);
+
+ m_item->setSize(getWidth(), getHeight());
}
}
diff --git a/source/jucePluginEditorLib/patchmanager/griditemcontainer.cpp b/source/jucePluginEditorLib/patchmanager/griditemcontainer.cpp
@@ -3,8 +3,6 @@
#include "grid.h"
#include "griditem.h"
-#include "dsp56kEmu/logging.h"
-
namespace jucePluginEditorLib::patchManager
{
GridItemContainer::GridItemContainer(Grid& _grid) : m_grid(_grid)
@@ -50,7 +48,7 @@ namespace jucePluginEditorLib::patchManager
juce::Graphics g (snapshot);
g.setOrigin ((getLocalPoint (rowComp, juce::Point<int>()) - imageArea.getPosition()) * additionalScale);
- const auto rowScale = Component::getApproximateScaleFactorForComponent (rowComp) * additionalScale;
+ const auto rowScale = getApproximateScaleFactorForComponent(rowComp) * additionalScale;
if (g.reduceClipRegion (rowComp->getLocalBounds() * rowScale))
{
@@ -69,7 +67,12 @@ namespace jucePluginEditorLib::patchManager
{
m_itemIndexMouseDown = InvalidItem;
- const auto rows = m_grid.getSelectedEntries();
+ juce::SparseSet<int> rows;
+ const auto hoveredIndex = mouseToItemIndex(_e);
+ if(m_grid.isSelected(hoveredIndex))
+ rows = m_grid.getSelectedEntries();
+ else
+ rows.addRange(juce::Range<int>(static_cast<int>(hoveredIndex), static_cast<int>(hoveredIndex)+1));
if(!rows.isEmpty())
{
@@ -83,7 +86,7 @@ namespace jucePluginEditorLib::patchManager
const auto dragImage = createSnapshotOfRows(rows, x, y);
const auto p = juce::Point<int> (x, y) - _e.getEventRelativeTo (this).position.toInt();
- dragContainer->startDragging (dragDescription, this, dragImage, true, &p, &_e.source);
+ dragContainer->startDragging (dragDescription, &m_grid, dragImage, true, &p, &_e.source);
}
}
}