void ObjectInspector::ObjectInspectorPrivate::slotSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected) { if (m_formWindow) { synchronizeSelection(selected, deselected); QMetaObject::invokeMethod(m_core->formWindowManager(), "slotUpdateActions"); } }
void ClipboardMonitor::onClipboardChanged(ClipboardMode mode) { QVariantMap data = m_clipboard->data(mode, m_formats); auto clipboardData = mode == ClipboardMode::Clipboard ? &m_clipboardData : &m_selectionData; if ( hasSameData(data, *clipboardData) ) { COPYQ_LOG( QString("Ignoring unchanged %1") .arg(mode == ClipboardMode::Clipboard ? "clipboard" : "selection") ); return; } *clipboardData = data; COPYQ_LOG( QString("%1 changed, owner is \"%2\"") .arg(mode == ClipboardMode::Clipboard ? "Clipboard" : "Selection", getTextData(data, mimeOwner)) ); if (mode != ClipboardMode::Clipboard) { const QString modeName = mode == ClipboardMode::Selection ? "selection" : "find buffer"; data.insert(mimeClipboardMode, modeName); } // add window title of clipboard owner if ( !data.contains(mimeOwner) && !data.contains(mimeWindowTitle) ) { PlatformPtr platform = createPlatformNativeInterface(); PlatformWindowPtr currentWindow = platform->getCurrentWindow(); if (currentWindow) data.insert( mimeWindowTitle, currentWindow->getTitle().toUtf8() ); } #ifdef HAS_MOUSE_SELECTIONS if ( (mode == ClipboardMode::Clipboard ? m_clipboardToSelection : m_selectionToClipboard) && !data.contains(mimeOwner) ) { const auto text = getTextData(data); if ( !text.isEmpty() ) { const auto targetData = mode == ClipboardMode::Clipboard ? &m_selectionData : &m_clipboardData; const auto targetText = getTextData(*targetData); emit synchronizeSelection(mode, text, qHash(targetText)); } } #endif // run automatic commands if ( anySessionOwnsClipboardData(data) ) { emit clipboardChanged(data, ClipboardOwnership::Own); } else if ( isClipboardDataHidden(data) ) { emit clipboardChanged(data, ClipboardOwnership::Hidden); } else { const auto defaultTab = m_clipboardTab.isEmpty() ? defaultClipboardTabName() : m_clipboardTab; setTextData(&data, defaultTab, mimeCurrentTab); #ifdef HAS_MOUSE_SELECTIONS if (mode == ClipboardMode::Clipboard ? m_storeClipboard : m_storeSelection) { #else if (m_storeClipboard) { #endif setTextData(&data, m_clipboardTab, mimeOutputTab); } emit clipboardChanged(data, ClipboardOwnership::Foreign); } }