Changeset 95436 in webkit


Ignore:
Timestamp:
Sep 19, 2011 10:14:19 AM (13 years ago)
Author:
caio.oliveira@openbossa.org
Message:

[Qt] [WK2] Implement popup menus in QDesktopWebView using QComboBox
https://bugs.webkit.org/show_bug.cgi?id=67938

Reviewed by Andreas Kling.

Implement a WebPopupMenuProxy that uses QtWebComboBox (a QComboBox subclass we
have for WK1). Then use this WebPopupMenuProxy in QDesktopWebView. The implementation
explicitly avoids running a nested mainloop.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::showPopupMenu):
Since we don't run a nested mainloop, we need to keep the client pointer to call
valueChangedForPopupMenu().

  • UIProcess/qt/WebPopupMenuProxyQtDesktop.cpp: Added.

(WebKit::WebPopupMenuProxyQtDesktop::WebPopupMenuProxyQtDesktop):
(WebKit::WebPopupMenuProxyQtDesktop::~WebPopupMenuProxyQtDesktop):
(WebKit::WebPopupMenuProxyQtDesktop::showPopupMenu):
(WebKit::WebPopupMenuProxyQtDesktop::hidePopupMenu):
(WebKit::WebPopupMenuProxyQtDesktop::setSelectedIndex):
(WebKit::WebPopupMenuProxyQtDesktop::onPopupMenuHidden):
(WebKit::WebPopupMenuProxyQtDesktop::populate):

  • UIProcess/qt/WebPopupMenuProxyQtDesktop.h: Added.

(WebKit::WebPopupMenuProxyQtDesktop::create):

  • UIProcess/qt/qdesktopwebpageproxy.cpp:

(QDesktopWebPageProxy::createPopupMenuProxy):

  • UIProcess/qt/qdesktopwebpageproxy.h:
  • WebKit2.pro:
Location:
trunk/Source/WebKit2
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r95403 r95436  
     12011-09-14  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>
     2
     3        [Qt] [WK2] Implement popup menus in QDesktopWebView using QComboBox
     4        https://bugs.webkit.org/show_bug.cgi?id=67938
     5
     6        Reviewed by Andreas Kling.
     7
     8        Implement a WebPopupMenuProxy that uses QtWebComboBox (a QComboBox subclass we
     9        have for WK1). Then use this WebPopupMenuProxy in QDesktopWebView. The implementation
     10        explicitly avoids running a nested mainloop.
     11
     12        * UIProcess/WebPageProxy.cpp:
     13        (WebKit::WebPageProxy::showPopupMenu):
     14        Since we don't run a nested mainloop, we need to keep the client pointer to call
     15        valueChangedForPopupMenu().
     16
     17        * UIProcess/qt/WebPopupMenuProxyQtDesktop.cpp: Added.
     18        (WebKit::WebPopupMenuProxyQtDesktop::WebPopupMenuProxyQtDesktop):
     19        (WebKit::WebPopupMenuProxyQtDesktop::~WebPopupMenuProxyQtDesktop):
     20        (WebKit::WebPopupMenuProxyQtDesktop::showPopupMenu):
     21        (WebKit::WebPopupMenuProxyQtDesktop::hidePopupMenu):
     22        (WebKit::WebPopupMenuProxyQtDesktop::setSelectedIndex):
     23        (WebKit::WebPopupMenuProxyQtDesktop::onPopupMenuHidden):
     24        (WebKit::WebPopupMenuProxyQtDesktop::populate):
     25        * UIProcess/qt/WebPopupMenuProxyQtDesktop.h: Added.
     26        (WebKit::WebPopupMenuProxyQtDesktop::create):
     27        * UIProcess/qt/qdesktopwebpageproxy.cpp:
     28        (QDesktopWebPageProxy::createPopupMenuProxy):
     29        * UIProcess/qt/qdesktopwebpageproxy.h:
     30        * WebKit2.pro:
     31
    1322011-09-19  Carlos Garcia Campos  <cgarcia@igalia.com>
    233
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r95303 r95436  
    23102310
    23112311    protectedActivePopupMenu->showPopupMenu(rect, static_cast<TextDirection>(textDirection), m_pageScaleFactor, items, data, selectedIndex);
     2312
     2313    // Since Qt doesn't use a nested mainloop the show the popup and get the answer, we need to keep the client pointer valid.
     2314#if !PLATFORM(QT)
    23122315    protectedActivePopupMenu->invalidate();
     2316#endif
    23132317    protectedActivePopupMenu = 0;
    23142318}
  • trunk/Source/WebKit2/UIProcess/qt/qdesktopwebpageproxy.cpp

    r94087 r95436  
    1919 */
    2020
     21#include "qdesktopwebpageproxy.h"
     22
     23#include "qdesktopwebview.h"
    2124#include "qdesktopwebview_p.h"
    22 #include "qdesktopwebpageproxy.h"
    2325#include "DrawingAreaProxyImpl.h"
    2426#include "NativeWebMouseEvent.h"
    2527#include "NativeWebWheelEvent.h"
     28#include "WebPopupMenuProxyQtDesktop.h"
    2629#include <QApplication>
    2730#include <QEvent>
     
    7881}
    7982#endif
     83
     84PassRefPtr<WebPopupMenuProxy> QDesktopWebPageProxy::createPopupMenuProxy(WebPageProxy*)
     85{
     86    QSGItem* webViewItem = static_cast<QDesktopWebViewPrivate*>(m_viewInterface)->q;
     87    return WebPopupMenuProxyQtDesktop::create(m_webPageProxy.get(), webViewItem);
     88}
    8089
    8190bool QDesktopWebPageProxy::handleEvent(QEvent* ev)
  • trunk/Source/WebKit2/UIProcess/qt/qdesktopwebpageproxy.h

    r94087 r95436  
    4848#endif
    4949
     50    virtual PassRefPtr<WebKit::WebPopupMenuProxy> createPopupMenuProxy(WebKit::WebPageProxy*);
     51
    5052    virtual void timerEvent(QTimerEvent*);
    5153
  • trunk/Source/WebKit2/WebKit2.pro

    r95303 r95436  
    2020# Build both debug and release configurations
    2121mac: CONFIG += build_all
     22
     23WEBKIT1_HEADERS_SHARED_WITH_WEBKIT2= \
     24    $$PWD/../WebKit/qt/WebCoreSupport/QtWebComboBox.h
     25
     26WEBKIT1_SOURCES_SHARED_WITH_WEBKIT2 = \
     27    $$PWD/../WebKit/qt/WebCoreSupport/QtWebComboBox.cpp
    2228
    2329WEBKIT2_GENERATED_HEADERS = \
     
    260266    UIProcess/qt/WebContextMenuProxyQt.h \
    261267    UIProcess/qt/WebPopupMenuProxyQt.h \
     268    UIProcess/qt/WebPopupMenuProxyQtDesktop.h \
    262269    WebProcess/ApplicationCache/WebApplicationCacheManager.h \
    263270    WebProcess/Authentication/AuthenticationManager.h \
     
    324331    WebProcess/WebPage/WebPageGroupProxy.h \
    325332    WebProcess/WebProcess.h \
    326     $$WEBKIT2_GENERATED_HEADERS
     333    $$WEBKIT2_GENERATED_HEADERS \
     334    $$WEBKIT1_HEADERS_SHARED_WITH_WEBKIT2
    327335
    328336SOURCES += \
     
    494502    UIProcess/qt/WebPageProxyQt.cpp \
    495503    UIProcess/qt/WebPopupMenuProxyQt.cpp \
     504    UIProcess/qt/WebPopupMenuProxyQtDesktop.cpp \
    496505    UIProcess/qt/WebPreferencesQt.cpp \
    497506    WebProcess/ApplicationCache/WebApplicationCacheManager.cpp \
     
    582591    WebProcess/qt/WebProcessMainQt.cpp \
    583592    WebProcess/qt/WebProcessQt.cpp \
    584     $$WEBKIT2_GENERATED_SOURCES
     593    $$WEBKIT2_GENERATED_SOURCES \
     594    $$WEBKIT1_SOURCES_SHARED_WITH_WEBKIT2
    585595
    586596contains(DEFINES, ENABLE_NETSCAPE_PLUGIN_API=0) {
Note: See TracChangeset for help on using the changeset viewer.