@@ -1332,16 +1332,17 @@ QString ScriptableProxy::browserRemoveRows(const QString &tabName, QVector<int>
1332
1332
return QString ();
1333
1333
}
1334
1334
1335
- void ScriptableProxy::browserMoveSelected (int targetRow)
1335
+ void ScriptableProxy::browserMoveSelected (int targetRow, const QString &tabName )
1336
1336
{
1337
- INVOKE2 (browserMoveSelected, (targetRow));
1337
+ INVOKE2 (browserMoveSelected, (targetRow, tabName ));
1338
1338
1339
- QList<QPersistentModelIndex> selected = selectedIndexes ();
1340
- selectionRemoveInvalid (&selected);
1341
- ClipboardBrowser *c = browserForIndexes (selected);
1339
+ ClipboardBrowser *c = fetchBrowser (tabName);
1342
1340
if (c == nullptr )
1343
1341
return ;
1344
1342
1343
+ QList<QPersistentModelIndex> selected = selectedIndexes (c);
1344
+ selectionRemoveInvalid (&selected);
1345
+
1345
1346
QModelIndexList indexes;
1346
1347
indexes.reserve (selected.size ());
1347
1348
for (const auto &index : selected)
@@ -1574,11 +1575,15 @@ QString ScriptableProxy::tab(const QString &tabName)
1574
1575
return c ? c->tabName () : QString ();
1575
1576
}
1576
1577
1577
- int ScriptableProxy::currentItem ()
1578
+ int ScriptableProxy::currentItem (const QString &tabName )
1578
1579
{
1579
- INVOKE (currentItem, ());
1580
+ INVOKE (currentItem, (tabName ));
1580
1581
1581
- const QPersistentModelIndex current = currentIndex ();
1582
+ ClipboardBrowser *c = fetchBrowser (tabName);
1583
+ if (!c)
1584
+ return -1 ;
1585
+
1586
+ const QPersistentModelIndex current = currentIndex (c);
1582
1587
return current.isValid () ? current.row () : -1 ;
1583
1588
}
1584
1589
@@ -1604,12 +1609,16 @@ bool ScriptableProxy::selectItems(const QString &tabName, const QVector<int> &ro
1604
1609
return true ;
1605
1610
}
1606
1611
1607
- QVector<int > ScriptableProxy::selectedItems ()
1612
+ QVector<int > ScriptableProxy::selectedItems (const QString &tabName )
1608
1613
{
1609
- INVOKE (selectedItems, ());
1614
+ INVOKE (selectedItems, (tabName));
1615
+
1616
+ ClipboardBrowser *c = fetchBrowser (tabName);
1617
+ if (c == nullptr )
1618
+ return {};
1610
1619
1611
1620
QVector<int > selectedRows;
1612
- QList<QPersistentModelIndex> selected = selectedIndexes ();
1621
+ QList<QPersistentModelIndex> selected = selectedIndexes (c );
1613
1622
selectedRows.reserve (selected.count ());
1614
1623
1615
1624
for (const auto &index : selected)
@@ -1622,58 +1631,51 @@ QString ScriptableProxy::selectedTab()
1622
1631
{
1623
1632
INVOKE (selectedTab, ());
1624
1633
1625
- const QPersistentModelIndex current = currentIndex ();
1626
- ClipboardBrowser *c = m_wnd->browserForItem (current);
1627
- if (c != nullptr )
1628
- return c->tabName ();
1629
-
1630
- const QList<QPersistentModelIndex> selected = selectedIndexes ();
1631
- c = m_wnd->browserForItem (current);
1632
- if (c != nullptr )
1633
- return c->tabName ();
1634
-
1635
- return m_actionData.value (mimeCurrentTab).toString ();
1634
+ ClipboardBrowser *c = selectedBrowser ();
1635
+ return (c != nullptr )
1636
+ ? c->tabName ()
1637
+ : m_actionData.value (mimeCurrentTab).toString ();
1636
1638
}
1637
1639
1638
- QVariantMap ScriptableProxy::selectedItemData (int selectedIndex)
1640
+ QVariantMap ScriptableProxy::selectedItemData (int selectedIndex, const QString &tabName )
1639
1641
{
1640
- INVOKE (selectedItemData, (selectedIndex));
1642
+ INVOKE (selectedItemData, (selectedIndex, tabName ));
1641
1643
1642
- const auto index = selectedIndexes (). value (selectedIndex );
1643
- if ( !index. isValid () )
1644
+ ClipboardBrowser *c = fetchBrowser (tabName );
1645
+ if (c == nullptr )
1644
1646
return {};
1645
1647
1646
- ClipboardBrowser *c = m_wnd-> browserForItem (index );
1647
- if (c == nullptr )
1648
+ const auto index = selectedIndexes (). value (selectedIndex );
1649
+ if ( !index. isValid () )
1648
1650
return {};
1649
1651
1650
1652
return c->copyIndex (index);
1651
1653
}
1652
1654
1653
- bool ScriptableProxy::setSelectedItemData (int selectedIndex, const QVariantMap &data)
1655
+ bool ScriptableProxy::setSelectedItemData (int selectedIndex, const QVariantMap &data, const QString &tabName )
1654
1656
{
1655
- INVOKE (setSelectedItemData, (selectedIndex, data));
1656
-
1657
- const auto index = selectedIndexes ().value (selectedIndex);
1658
- if ( !index.isValid () )
1659
- return false ;
1657
+ INVOKE (setSelectedItemData, (selectedIndex, data, tabName));
1660
1658
1661
- ClipboardBrowser *c = m_wnd-> browserForItem (index );
1659
+ ClipboardBrowser *c = fetchBrowser (tabName );
1662
1660
if (c == nullptr )
1661
+ return {};
1662
+
1663
+ const auto index = selectedIndexes (c).value (selectedIndex);
1664
+ if ( !index.isValid () )
1663
1665
return false ;
1664
1666
1665
1667
return c->model ()->setData (index, data, contentType::data);
1666
1668
}
1667
1669
1668
- VariantMapList ScriptableProxy::selectedItemsData ()
1670
+ VariantMapList ScriptableProxy::selectedItemsData (const QString &tabName )
1669
1671
{
1670
- INVOKE (selectedItemsData, ());
1672
+ INVOKE (selectedItemsData, (tabName ));
1671
1673
1672
- QList<QPersistentModelIndex> selected = selectedIndexes ();
1673
- ClipboardBrowser *c = browserForIndexes (selected);
1674
+ ClipboardBrowser *c = fetchBrowser (tabName);
1674
1675
if (c == nullptr )
1675
- return {QVector<QVariantMap>(selected. size (), {}) };
1676
+ return {};
1676
1677
1678
+ QList<QPersistentModelIndex> selected = selectedIndexes (c);
1677
1679
QVector<QVariantMap> dataList;
1678
1680
dataList.reserve (selected.size ());
1679
1681
@@ -1683,27 +1685,24 @@ VariantMapList ScriptableProxy::selectedItemsData()
1683
1685
return {dataList};
1684
1686
}
1685
1687
1686
- void ScriptableProxy::setSelectedItemsData (const VariantMapList &dataList)
1688
+ void ScriptableProxy::setSelectedItemsData (const VariantMapList &dataList, const QString &tabName )
1687
1689
{
1688
- INVOKE2 (setSelectedItemsData, (dataList));
1690
+ INVOKE2 (setSelectedItemsData, (dataList, tabName ));
1689
1691
1690
- const QList<QPersistentModelIndex> selected = selectedIndexes ();
1691
- ClipboardBrowser *c = nullptr ;
1692
+ ClipboardBrowser *c = fetchBrowser (tabName);
1693
+ if (c == nullptr )
1694
+ return ;
1695
+
1696
+ const QList<QPersistentModelIndex> selected = selectedIndexes (c);
1692
1697
QMap<QPersistentModelIndex, QVariantMap> itemsData;
1693
1698
const auto count = std::min ( selected.size (), dataList.items .size () );
1694
1699
for ( int i = 0 ; i < count; ++i ) {
1695
1700
const auto &index = selected[i];
1696
- if ( !index.isValid () )
1697
- continue ;
1698
-
1699
- if (c == nullptr )
1700
- c = m_wnd->browserForItem (index);
1701
-
1702
- itemsData[index] = dataList.items [i];
1701
+ if ( index.isValid () )
1702
+ itemsData[index] = dataList.items [i];
1703
1703
}
1704
1704
1705
- if (c != nullptr )
1706
- c->setItemsData (itemsData);
1705
+ c->setItemsData (itemsData);
1707
1706
}
1708
1707
1709
1708
int ScriptableProxy::createSelection (const QString &tabName)
@@ -1860,12 +1859,11 @@ void ScriptableProxy::selectionGetCurrent(int id)
1860
1859
{
1861
1860
INVOKE2 (selectionGetCurrent, (id));
1862
1861
1863
- QList<QPersistentModelIndex> selected = selectedIndexes ();
1864
- ClipboardBrowser *c = browserForIndexes (selected);
1865
- if (c == nullptr ) {
1866
- const QString currentTab = m_actionData.value (mimeCurrentTab).toString ();
1867
- c = fetchBrowser (currentTab);
1868
- }
1862
+ ClipboardBrowser *c = m_selections.value (id).browser ;
1863
+ if (c == nullptr )
1864
+ return ;
1865
+
1866
+ QList<QPersistentModelIndex> selected = selectedIndexes (c);
1869
1867
m_selections[id] = {c, selected};
1870
1868
}
1871
1869
@@ -2202,16 +2200,16 @@ int ScriptableProxy::inputDialog(const NamedValueList &values)
2202
2200
return dialogId;
2203
2201
}
2204
2202
2205
- void ScriptableProxy::setSelectedItemsData (const QString &mime, const QVariant &value)
2203
+ void ScriptableProxy::setSelectedItemsData (const QString &mime, const QVariant &value, const QString &tabName )
2206
2204
{
2207
- INVOKE2 (setSelectedItemsData, (mime, value));
2205
+ INVOKE2 (setSelectedItemsData, (mime, value, tabName ));
2208
2206
2209
- QList<QPersistentModelIndex> selected = selectedIndexes ();
2210
- selectionRemoveInvalid (&selected);
2211
- ClipboardBrowser *c = browserForIndexes (selected);
2207
+ ClipboardBrowser *c = fetchBrowser (tabName);
2212
2208
if (c == nullptr )
2213
2209
return ;
2214
2210
2211
+ QList<QPersistentModelIndex> selected = selectedIndexes (c);
2212
+ selectionRemoveInvalid (&selected);
2215
2213
setItemsData (c, selected, mime, value);
2216
2214
}
2217
2215
@@ -2626,6 +2624,17 @@ ClipboardBrowser *ScriptableProxy::fetchBrowser(const QString &tabName)
2626
2624
return tabName.isEmpty () ? m_wnd->browser (0 ) : m_wnd->tab (tabName);
2627
2625
}
2628
2626
2627
+ ClipboardBrowser *ScriptableProxy::selectedBrowser ()
2628
+ {
2629
+ const QPersistentModelIndex current = currentIndex ();
2630
+ ClipboardBrowser *c = m_wnd->browserForItem (current);
2631
+ if (c != nullptr )
2632
+ return c;
2633
+
2634
+ const QList<QPersistentModelIndex> selected = selectedIndexes ();
2635
+ return browserForIndexes (selected);
2636
+ }
2637
+
2629
2638
QVariantMap ScriptableProxy::itemData (const QString &tabName, int i)
2630
2639
{
2631
2640
auto c = fetchBrowser (tabName);
@@ -2676,14 +2685,24 @@ T ScriptableProxy::getSelectionData(const QString &mime)
2676
2685
return value.value <T>();
2677
2686
}
2678
2687
2679
- QPersistentModelIndex ScriptableProxy::currentIndex ()
2688
+ QPersistentModelIndex ScriptableProxy::currentIndex (ClipboardBrowser *c )
2680
2689
{
2681
- return getSelectionData<QPersistentModelIndex>(mimeCurrentItem);
2690
+ return (c == nullptr || c == selectedBrowser ())
2691
+ ? getSelectionData<QPersistentModelIndex>(mimeCurrentItem)
2692
+ : QPersistentModelIndex (c->currentIndex ());
2682
2693
}
2683
2694
2684
- QList<QPersistentModelIndex> ScriptableProxy::selectedIndexes ()
2695
+ QList<QPersistentModelIndex> ScriptableProxy::selectedIndexes (ClipboardBrowser *c )
2685
2696
{
2686
- return getSelectionData<QList<QPersistentModelIndex>>(mimeSelectedItems);
2697
+ if (c == nullptr || c == selectedBrowser ())
2698
+ return getSelectionData<QList<QPersistentModelIndex>>(mimeSelectedItems);
2699
+
2700
+ QList<QPersistentModelIndex> indexes;
2701
+ const QModelIndexList selected = c->selectionModel ()->selectedIndexes ();
2702
+ indexes.reserve (selected.size ());
2703
+ for (const auto &index : selected)
2704
+ indexes.append (QPersistentModelIndex (index));
2705
+ return indexes;
2687
2706
}
2688
2707
2689
2708
ClipboardBrowser *ScriptableProxy::browserForIndexes (const QList<QPersistentModelIndex> &indexes) const
0 commit comments