[webkit-qt] Fwd: Custom Context Menu Events
Simon Hausmann
simon.hausmann at digia.com
Fri Mar 1 00:32:44 PST 2013
On Thursday, February 28, 2013 08:14:23 PM Mitchell Verter wrote:
> Hi all,
> I am fairly new to QT and the QT-Webkit, so I was hoping someone could
> guide me through this:
>
> ====================
> I'm trying to think through the problem with the context menus.
> The issue is that it gives several different menus, depending on the
> context.
> A. Page Contex
> .. i. Forward
> .. ii. Reload
> .. iii. Back
> B. Image Context
> .. i. Copy Image
> .. ii. Save Image
> .. iii. Copy Image Link (?)
>
> The issue is that we want to limit Image context (B) to do only (B.ii)
>
> I am guessing that we would need to do something with:
> ============================================
>
> bool <http://qt-project.org/doc/qt-4.7/qml-bool.html>QWebPage
>
> swallowContextMenuEvent(QContextMenuEvent<http://qt-project.org/doc/qt-4.7/q
> contextmenuevent.html> *
> event)
>
> Filters the context menu event, *event*, through handlers for scrollbars
> and custom event handlers in the web page. Returns true if the event was
> handled; otherwise false.
>
> A web page may swallow a context menu event through a custom event handler,
> allowing for context menus to be implemented in HTML/JavaScript. This is
> used by Google Maps <http://maps.google.com/>, for example.
>
> Look up this member
> <http://qt.gitorious.org/qt/qt/blobs/4.7/src/3rdparty/webkit/WebKit/qt/Api/q
> webpage.h#line256>in the source code.
>
> =================================================
>
>
> How would we retrict it to context (B)?
>
>
> Someone told me this previously:
>
>
> [14:52] so how do i constrain this to only affect the image context menu
> [14:54] QWebPage::hitTestContent(const QPoint &Â pos) and
> !QWebHitTestResult::imageUrl().isEmpty()
Yes, roughly.
swallowContextMenuEvent is about allowing web content to provide their own
context menu. If you don't want that, then you need to re-implement
swallowContextMenuEvent.
If you want to customize the appearance of the existing context menu (provided
by WebKit), then I suggest to re-implement contextMenuEvent() and roll up your
own, based on the information that hitTestContent() provides you with, i.e. if
the mouse is under an image, a link, etc.
You can re-use existing QAction objects, just fetch it from the QWebPage and
add it to your QMenu.
Simon
More information about the webkit-qt
mailing list