return QWebPage::NoWebAction;
}
-QMenu *QWebPagePrivate::createContextMenu(const QList<WebCore::ContextMenuItem> *items)
+QMenu *QWebPagePrivate::createContextMenu(const WebCore::ContextMenu *webcoreMenu, const QList<WebCore::ContextMenuItem> *items)
{
QMenu *menu = new QMenu;
for (int i = 0; i < items->count(); ++i) {
case WebCore::ActionType: {
QWebPage::WebAction action = webActionForContextMenuAction(item.action());
QAction *a = q->action(action);
- if (a)
+ if (a) {
+ ContextMenuItem it(item);
+ webcoreMenu->checkOrEnableIfNeeded(it);
+ PlatformMenuItemDescription desc = it.releasePlatformDescription();
+ a->setEnabled(desc.enabled);
+ a->setChecked(desc.checked);
+
menu->addAction(a);
+ }
break;
}
case WebCore::SeparatorType:
menu->addSeparator();
break;
case WebCore::SubmenuType: {
- QMenu *subMenu = createContextMenu(item.platformSubMenu());
+ QMenu *subMenu = createContextMenu(webcoreMenu, item.platformSubMenu());
subMenu->setTitle(item.title());
menu->addAction(subMenu->menuAction());
break;
d->currentContext = QWebPageContext(menu->hitTestResult());
const QList<ContextMenuItem> *items = menu->platformDescription();
- QMenu *qmenu = d->createContextMenu(items);
+ QMenu *qmenu = d->createContextMenu(menu, items);
if (qmenu) {
qmenu->exec(ev->globalPos());
delete qmenu;
class ChromeClientQt;
class ContextMenuClientQt;
class ContextMenuItem;
+ class ContextMenu;
class EditorClientQt;
class Page;
}
QWebPagePrivate(QWebPage *);
~QWebPagePrivate();
void createMainFrame();
- QMenu *createContextMenu(const QList<WebCore::ContextMenuItem> *items);
+ QMenu *createContextMenu(const WebCore::ContextMenu *webcoreMenu, const QList<WebCore::ContextMenuItem> *items);
QWebFrame *frameAt(const QPoint &pos) const;
+2007-11-10 Simon Hausmann <hausmann@kde.org>
+
+ Reviewed by Nikolas.
+
+ Before adding an action to the context menu call checkOrEnableIfNeeded for each action
+ to update the enable/checked state correctly.
+
+
+ * Api/qwebpage.cpp:
+ (QWebPagePrivate::createContextMenu):
+ (QWebPage::contextMenuEvent):
+ * Api/qwebpage_p.h:
+
2007-11-10 Simon Hausmann <hausmann@kde.org>
Reviewed by Nikolas.