MCPcopy Create free account
hub / github.com/LeFroid/Viper-Browser / showContextMenu

Method showContextMenu

src/ui/web/WebView.cpp:193–316  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

191}
192
193void WebView::showContextMenu(const QPoint &globalPos, const QPoint &relativePos)
194{
195 WebHitTestResult contextMenuData(m_page, getContextMenuScript(relativePos));
196
197 const bool askWhereToSave = sBrowserApplication->getSettings()->getValue(BrowserSetting::AskWhereToSaveDownloads).toBool();
198
199 QMenu *menu = new QMenu(this);
200
201 // Link menu options
202 const auto linkUrl = contextMenuData.linkUrl();
203 if (!linkUrl.isEmpty())
204 {
205 menu->addAction(tr("Open link in new tab"), this, [=](){
206 emit openInNewBackgroundTab(linkUrl);
207 });
208 menu->addAction(tr("Open link in new window"), this, [=](){
209 emit openInNewWindowRequest(linkUrl, m_privateView);
210 });
211 menu->addSeparator();
212 }
213
214 auto mediaType = contextMenuData.mediaType();
215
216 // Image menu options
217 if (mediaType == WebHitTestResult::MediaTypeImage)
218 {
219 menu->addAction(tr("Open image in new tab"), this, [=](){
220 emit openInNewBackgroundTab(contextMenuData.mediaUrl());
221 });
222 menu->addAction(tr("Open image"), this, [=](){
223 emit openRequest(contextMenuData.mediaUrl());
224 });
225 menu->addSeparator();
226
227 QAction *a = pageAction(WebPage::DownloadImageToDisk);
228
229 // Set text to 'save image as...' if setting is to always ask where to save
230 if (askWhereToSave)
231 a->setText(tr("Save image as..."));
232 menu->addAction(a);
233
234 menu->addAction(pageAction(WebPage::CopyImageToClipboard));
235 menu->addAction(pageAction(WebPage::CopyImageUrlToClipboard));
236
237 menu->addSeparator();
238 }
239 else if (mediaType == WebHitTestResult::MediaTypeVideo
240 || mediaType == WebHitTestResult::MediaTypeAudio)
241 {
242 menu->addAction(pageAction(WebPage::ToggleMediaPlayPause));
243 menu->addAction(pageAction(WebPage::ToggleMediaMute));
244 menu->addAction(pageAction(WebPage::ToggleMediaLoop));
245 menu->addAction(pageAction(WebPage::ToggleMediaControls));
246 menu->addSeparator();
247
248 menu->addAction(pageAction(WebPage::DownloadMediaToDisk));
249 menu->addAction(pageAction(WebPage::CopyMediaUrlToClipboard));
250 menu->addSeparator();

Callers 1

Calls 9

getSettingsMethod · 0.80
linkUrlMethod · 0.80
mediaTypeMethod · 0.80
mediaUrlMethod · 0.80
selectedTextMethod · 0.80
isContentEditableMethod · 0.80
getSearchRequestMethod · 0.80
execMethod · 0.80
getValueMethod · 0.45

Tested by

no test coverage detected