Pass copy/cut/paste events from the runtime to the webview on Mac under QtWebEngine.
parent
54e6336a58
commit
4bde18685b
|
@ -196,8 +196,76 @@ void BrowserWindow::createActions()
|
||||||
zoomOutShortcut = new QShortcut(QKeySequence(QKeySequence::ZoomOut), this);
|
zoomOutShortcut = new QShortcut(QKeySequence(QKeySequence::ZoomOut), this);
|
||||||
zoomOutShortcut->setContext(Qt::ApplicationShortcut);
|
zoomOutShortcut->setContext(Qt::ApplicationShortcut);
|
||||||
connect(zoomOutShortcut, SIGNAL(activated()), this, SLOT(zoomOut()));
|
connect(zoomOutShortcut, SIGNAL(activated()), this, SLOT(zoomOut()));
|
||||||
|
|
||||||
|
#ifdef __APPLE__
|
||||||
|
#if QT_VERSION >= 0x050500
|
||||||
|
QShortcut *cut_shortcut = new QShortcut(QKeySequence("Ctrl+X"), this);
|
||||||
|
QObject::connect(cut_shortcut, SIGNAL(activated()), this, SLOT(onMacCut()));
|
||||||
|
|
||||||
|
QShortcut *copy_shortcut = new QShortcut(QKeySequence("Ctrl+C"), this);
|
||||||
|
QObject::connect(copy_shortcut, SIGNAL(activated()), this, SLOT(onMacCopy()));
|
||||||
|
|
||||||
|
QShortcut *paste_shortcut = new QShortcut(QKeySequence("Ctrl+V"), this);
|
||||||
|
QObject::connect(paste_shortcut, SIGNAL(activated()), this, SLOT(onMacPaste()));
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __APPLE__
|
||||||
|
#if QT_VERSION >= 0x050500
|
||||||
|
// Find current tab widget's webview widget and trigger the respective events of web page
|
||||||
|
void BrowserWindow::triggerWebViewWindowEvents(QWebEnginePage::WebAction action)
|
||||||
|
{
|
||||||
|
WebViewWindow *webviewPtr = NULL;
|
||||||
|
|
||||||
|
// Find current selected index from the view and set the cut/copy/paste events.
|
||||||
|
int index = m_tabWidget->currentIndex();
|
||||||
|
|
||||||
|
// If main web view window is pgAdmin then we should return from here after triggering events
|
||||||
|
if (index == 0)
|
||||||
|
{
|
||||||
|
m_mainWebView->triggerPageAction(action);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// if multiple webviews are opened then trigger cut/copy/paste events to respective webviews.
|
||||||
|
QWidget *tab = m_tabWidget->widget(index);
|
||||||
|
if (tab != NULL)
|
||||||
|
{
|
||||||
|
QList<QWidget*> widgetList = tab->findChildren<QWidget*>();
|
||||||
|
foreach( QWidget* widgetPtr, widgetList )
|
||||||
|
{
|
||||||
|
if (widgetPtr != NULL)
|
||||||
|
{
|
||||||
|
webviewPtr = dynamic_cast<WebViewWindow*>(widgetPtr);
|
||||||
|
|
||||||
|
if (webviewPtr != NULL)
|
||||||
|
webviewPtr->triggerPageAction(action);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Trigger web page's cut event
|
||||||
|
void BrowserWindow::onMacCut()
|
||||||
|
{
|
||||||
|
triggerWebViewWindowEvents(QWebEnginePage::Cut);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Trigger web page's copy event
|
||||||
|
void BrowserWindow::onMacCopy()
|
||||||
|
{
|
||||||
|
triggerWebViewWindowEvents(QWebEnginePage::Copy);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Trigger web page's paste event
|
||||||
|
void BrowserWindow::onMacPaste()
|
||||||
|
{
|
||||||
|
triggerWebViewWindowEvents(QWebEnginePage::Paste);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
// Process loading finished signals from the web view.
|
// Process loading finished signals from the web view.
|
||||||
void BrowserWindow::finishLoading(bool ok)
|
void BrowserWindow::finishLoading(bool ok)
|
||||||
|
|
|
@ -52,6 +52,13 @@ protected slots:
|
||||||
void urlLinkClicked(const QUrl &);
|
void urlLinkClicked(const QUrl &);
|
||||||
void closetabs();
|
void closetabs();
|
||||||
void tabTitleChanged(const QString &);
|
void tabTitleChanged(const QString &);
|
||||||
|
#ifdef __APPLE__
|
||||||
|
#if QT_VERSION >= 0x050500
|
||||||
|
void onMacCut();
|
||||||
|
void onMacCopy();
|
||||||
|
void onMacPaste();
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void openUrl();
|
void openUrl();
|
||||||
|
@ -121,6 +128,7 @@ private:
|
||||||
void createActions();
|
void createActions();
|
||||||
void pause(int seconds = 1);
|
void pause(int seconds = 1);
|
||||||
int findURLTab(const QUrl &name);
|
int findURLTab(const QUrl &name);
|
||||||
|
void triggerWebViewWindowEvents(QWebEnginePage::WebAction action);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // BROWSERWINDOW_H
|
#endif // BROWSERWINDOW_H
|
||||||
|
|
Loading…
Reference in New Issue