Changeset 85197 in webkit


Ignore:
Timestamp:
Apr 28, 2011 9:44:34 AM (13 years ago)
Author:
Carlos Garcia Campos
Message:

2011-04-28 Carlos Garcia Campos <cgarcia@igalia.com>

Reviewed by Martin Robinson.

[GTK] Use the WebPage object in WebKitWebViewBase
https://bugs.webkit.org/show_bug.cgi?id=59683

It simplifies the implementation of the event callbacks. Remove
also all the methods from the page client that are no longer
needed.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp: (webkitWebViewBaseInit): (webViewExpose): (webViewDraw): (webViewSizeAllocate): (webViewFocusInEvent): (webViewFocusOutEvent): (webViewKeyPressEvent): (webViewKeyReleaseEvent): (webViewButtonPressEvent): (webViewButtonReleaseEvent): (webViewScrollEvent): (webViewMotionNotifyEvent):
  • UIProcess/API/gtk/WebKitWebViewBase.h:
  • UIProcess/gtk/WebView.cpp: (WebKit::WebView::WebView): (WebKit::WebView::createDrawingAreaProxy):
  • UIProcess/gtk/WebView.h:
Location:
trunk/Source/WebKit2
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r85196 r85197  
     12011-04-28  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        Reviewed by Martin Robinson.
     4
     5        [GTK] Use the WebPage object in WebKitWebViewBase
     6        https://bugs.webkit.org/show_bug.cgi?id=59683
     7
     8        It simplifies the implementation of the event callbacks. Remove
     9        also all the methods from the page client that are no longer
     10        needed.
     11
     12        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
     13        (webkitWebViewBaseInit):
     14        (webViewExpose):
     15        (webViewDraw):
     16        (webViewSizeAllocate):
     17        (webViewFocusInEvent):
     18        (webViewFocusOutEvent):
     19        (webViewKeyPressEvent):
     20        (webViewKeyReleaseEvent):
     21        (webViewButtonPressEvent):
     22        (webViewButtonReleaseEvent):
     23        (webViewScrollEvent):
     24        (webViewMotionNotifyEvent):
     25        * UIProcess/API/gtk/WebKitWebViewBase.h:
     26        * UIProcess/gtk/WebView.cpp:
     27        (WebKit::WebView::WebView):
     28        (WebKit::WebView::createDrawingAreaProxy):
     29        * UIProcess/gtk/WebView.h:
     30
    1312011-04-28  Carlos Garcia Campos  <cgarcia@igalia.com>
    232
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp

    r85196 r85197  
    3131#include "GOwnPtrGtk.h"
    3232#include "GtkVersioning.h"
     33#include "NativeWebKeyboardEvent.h"
     34#include "NativeWebMouseEvent.h"
    3335#include "NotImplemented.h"
    3436#include "RefPtrCairo.h"
    3537#include "WebContext.h"
     38#include "WebEventFactory.h"
    3639#include "WebPageProxy.h"
    3740#include <WebKit2/WKContext.h>
     
    4548    OwnPtr<WebView> webViewInstance;
    4649    RefPtr<WebPageProxy> page;
     50    gboolean isPageActive;
    4751    GtkIMContext* imContext;
    4852    gint currentClickCount;
     
    134138    webkitWebViewBase->priv = priv;
    135139
     140    priv->isPageActive = TRUE;
     141
    136142    gtk_widget_set_can_focus(GTK_WIDGET(webkitWebViewBase), TRUE);
    137143    priv->imContext = gtk_im_multicontext_new();
     
    147153static gboolean webViewExpose(GtkWidget* widget, GdkEventExpose* event)
    148154{
    149     WebView* webView = webkitWebViewBaseGetWebViewInstance(WEBKIT_WEB_VIEW_BASE(widget));
     155    WebKitWebViewBase* webViewBase = WEBKIT_WEB_VIEW_BASE(widget);
     156    WebKitWebViewBasePrivate* priv = webViewBase->priv;
    150157    GdkRectangle clipRect;
    151158    gdk_region_get_clipbox(event->region, &clipRect);
     
    154161    RefPtr<cairo_t> cr = adoptRef(gdk_cairo_create(window));
    155162
    156     webView->paint(widget, clipRect, cr.get());
     163    priv->page->drawingArea()->paint(clipRect, cr);
    157164
    158165    return FALSE;
     
    161168static gboolean webViewDraw(GtkWidget* widget, cairo_t* cr)
    162169{
    163     WebView* webView = webkitWebViewBaseGetWebViewInstance(WEBKIT_WEB_VIEW_BASE(widget));
     170    WebKitWebViewBase* webViewBase = WEBKIT_WEB_VIEW_BASE(widget);
     171    WebKitWebViewBasePrivate* priv = webViewBase->priv;
    164172    GdkRectangle clipRect;
    165173
     
    167175        return FALSE;
    168176
    169     webView->paint(widget, clipRect, cr);
     177    priv->page->drawingArea()->paint(clipRect, cr);
    170178
    171179    return FALSE;
     
    175183static void webViewSizeAllocate(GtkWidget* widget, GtkAllocation* allocation)
    176184{
    177     WebView* webView = webkitWebViewBaseGetWebViewInstance(WEBKIT_WEB_VIEW_BASE(widget));
     185    WebKitWebViewBase* webViewBase = WEBKIT_WEB_VIEW_BASE(widget);
     186    WebKitWebViewBasePrivate* priv = webViewBase->priv;
     187
    178188    GTK_WIDGET_CLASS(webkitWebViewBaseParentClass)->size_allocate(widget, allocation);
    179     webView->setSize(widget, IntSize(allocation->width, allocation->height));
     189    priv->page->drawingArea()->setSize(IntSize(allocation->width, allocation->height), IntSize());
    180190}
    181191
    182192static gboolean webViewFocusInEvent(GtkWidget* widget, GdkEventFocus* event)
    183193{
    184     WebKitWebViewBase* webkitWebViewBase = WEBKIT_WEB_VIEW_BASE(widget);
    185     WebView* webView = webkitWebViewBaseGetWebViewInstance(webkitWebViewBase);
     194    WebKitWebViewBase* webViewBase = WEBKIT_WEB_VIEW_BASE(widget);
     195    WebKitWebViewBasePrivate* priv = webViewBase->priv;
    186196
    187197    GtkWidget* toplevel = gtk_widget_get_toplevel(widget);
    188198    if (gtk_widget_is_toplevel(toplevel) && gtk_window_has_toplevel_focus(GTK_WINDOW(toplevel))) {
    189         gtk_im_context_focus_in(webkitWebViewBaseGetIMContext(webkitWebViewBase));
    190         webView->handleFocusInEvent(widget);
     199        gtk_im_context_focus_in(priv->imContext);
     200        if (!priv->isPageActive) {
     201            priv->isPageActive = TRUE;
     202            priv->page->viewStateDidChange(WebPageProxy::ViewWindowIsActive);
     203        }
    191204    }
    192205
     
    196209static gboolean webViewFocusOutEvent(GtkWidget* widget, GdkEventFocus* event)
    197210{
    198     WebKitWebViewBase* webkitWebViewBase = WEBKIT_WEB_VIEW_BASE(widget);
    199     WebView* webView = webkitWebViewBaseGetWebViewInstance(webkitWebViewBase);
    200 
    201     webView->handleFocusOutEvent(widget);
    202     GtkIMContext* imContext = webkitWebViewBaseGetIMContext(webkitWebViewBase);
    203     if (imContext)
    204         gtk_im_context_focus_out(imContext);
     211    WebKitWebViewBase* webViewBase = WEBKIT_WEB_VIEW_BASE(widget);
     212    WebKitWebViewBasePrivate* priv = webViewBase->priv;
     213
     214    priv->isPageActive = FALSE;
     215    priv->page->viewStateDidChange(WebPageProxy::ViewWindowIsActive);
     216    if (priv->imContext)
     217        gtk_im_context_focus_out(priv->imContext);
    205218
    206219    return GTK_WIDGET_CLASS(webkitWebViewBaseParentClass)->focus_out_event(widget, event);
     
    209222static gboolean webViewKeyPressEvent(GtkWidget* widget, GdkEventKey* event)
    210223{
    211     WebView* webView = webkitWebViewBaseGetWebViewInstance(WEBKIT_WEB_VIEW_BASE(widget));
    212     webView->handleKeyboardEvent(event);
     224    WebKitWebViewBase* webViewBase = WEBKIT_WEB_VIEW_BASE(widget);
     225    WebKitWebViewBasePrivate* priv = webViewBase->priv;
     226
     227    priv->page->handleKeyboardEvent(NativeWebKeyboardEvent(reinterpret_cast<GdkEvent*>(event)));
    213228
    214229    return GTK_WIDGET_CLASS(webkitWebViewBaseParentClass)->key_press_event(widget, event);
     
    217232static gboolean webViewKeyReleaseEvent(GtkWidget* widget, GdkEventKey* event)
    218233{
    219     WebKitWebViewBase* webkitWebViewBase = WEBKIT_WEB_VIEW_BASE(widget);
    220     WebView* webView = webkitWebViewBaseGetWebViewInstance(webkitWebViewBase);
    221 
    222     if (gtk_im_context_filter_keypress(webkitWebViewBaseGetIMContext(webkitWebViewBase), event))
     234    WebKitWebViewBase* webViewBase = WEBKIT_WEB_VIEW_BASE(widget);
     235    WebKitWebViewBasePrivate* priv = webViewBase->priv;
     236
     237    if (gtk_im_context_filter_keypress(priv->imContext, event))
    223238        return TRUE;
    224239
    225     webView->handleKeyboardEvent(event);
     240    priv->page->handleKeyboardEvent(NativeWebKeyboardEvent(reinterpret_cast<GdkEvent*>(event)));
    226241
    227242    return GTK_WIDGET_CLASS(webkitWebViewBaseParentClass)->key_release_event(widget, event);
     
    287302        priv->currentClickCount = 1;
    288303
    289     WebView* webView = webkitWebViewBaseGetWebViewInstance(webkitWebViewBase);
    290     webView->handleMouseEvent(event, priv->currentClickCount);
     304    priv->page->handleMouseEvent(NativeWebMouseEvent(event, priv->currentClickCount));
    291305
    292306    gdouble x, y;
     
    301315static gboolean webViewButtonReleaseEvent(GtkWidget* widget, GdkEventButton* event)
    302316{
    303     WebView* webView = webkitWebViewBaseGetWebViewInstance(WEBKIT_WEB_VIEW_BASE(widget));
     317    WebKitWebViewBase* webViewBase = WEBKIT_WEB_VIEW_BASE(widget);
     318    WebKitWebViewBasePrivate* priv = webViewBase->priv;
     319
    304320    gtk_widget_grab_focus(widget);
    305     webView->handleMouseEvent(reinterpret_cast<GdkEvent*>(event), 0 /* currentClickCount */);
     321    priv->page->handleMouseEvent(NativeWebMouseEvent(reinterpret_cast<GdkEvent*>(event), 0 /* currentClickCount */));
    306322
    307323    return FALSE;
     
    310326static gboolean webViewScrollEvent(GtkWidget* widget, GdkEventScroll* event)
    311327{
    312     WebView* webView = webkitWebViewBaseGetWebViewInstance(WEBKIT_WEB_VIEW_BASE(widget));
    313     webView->handleWheelEvent(event);
     328    WebKitWebViewBase* webViewBase = WEBKIT_WEB_VIEW_BASE(widget);
     329    WebKitWebViewBasePrivate* priv = webViewBase->priv;
     330
     331    priv->page->handleWheelEvent(WebEventFactory::createWebWheelEvent(event));
    314332
    315333    return FALSE;
     
    318336static gboolean webViewMotionNotifyEvent(GtkWidget* widget, GdkEventMotion* event)
    319337{
    320     WebView* webView = webkitWebViewBaseGetWebViewInstance(WEBKIT_WEB_VIEW_BASE(widget));
    321     webView->handleMouseEvent(reinterpret_cast<GdkEvent*>(event), 0 /* currentClickCount */);
     338    WebKitWebViewBase* webViewBase = WEBKIT_WEB_VIEW_BASE(widget);
     339    WebKitWebViewBasePrivate* priv = webViewBase->priv;
     340
     341    priv->page->handleMouseEvent(NativeWebMouseEvent(reinterpret_cast<GdkEvent*>(event), 0 /* currentClickCount */));
    322342
    323343    return FALSE;
     
    382402}
    383403
    384 WebView* webkitWebViewBaseGetWebViewInstance(WebKitWebViewBase* webkitWebViewBase)
    385 {
    386     return webkitWebViewBase->priv->webViewInstance.get();
    387 }
    388 
    389404GtkIMContext* webkitWebViewBaseGetIMContext(WebKitWebViewBase* webkitWebViewBase)
    390405{
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.h

    r85196 r85197  
    6262WebKitWebViewBase* webkitWebViewBaseCreate(WebContext*, WebPageGroup*);
    6363
    64 WebView* webkitWebViewBaseGetWebViewInstance(WebKitWebViewBase*);
    65 
    6664GtkIMContext* webkitWebViewBaseGetIMContext(WebKitWebViewBase*);
    6765
  • trunk/Source/WebKit2/UIProcess/gtk/WebView.cpp

    r85196 r85197  
    4646namespace WebKit {
    4747
    48 WebPageProxy* WebView::page() const
    49 {
    50     return webkitWebViewBaseGetPage(WEBKIT_WEB_VIEW_BASE(m_viewWidget));
    51 }
    52 
    53 void WebView::handleFocusInEvent(GtkWidget* widget)
    54 {
    55     if (!(m_isPageActive)) {
    56         m_isPageActive = true;
    57         page()->viewStateDidChange(WebPageProxy::ViewWindowIsActive);
    58     }
    59 
    60     page()->viewStateDidChange(WebPageProxy::ViewIsFocused);
    61 }
    62 
    63 void WebView::handleFocusOutEvent(GtkWidget* widget)
    64 {
    65     m_isPageActive = false;
    66     page()->viewStateDidChange(WebPageProxy::ViewWindowIsActive);
    67 }
    68 
    69 
    7048static void backspaceCallback(GtkWidget* widget, WebView* client)
    7149{
     
    245223WebView::WebView(GtkWidget* viewWidget)
    246224    : m_viewWidget(viewWidget)
    247     , m_isPageActive(true)
    248225    , m_nativeWidget(gtk_text_view_new())
    249226{
     
    264241}
    265242
    266 void WebView::paint(GtkWidget* widget, GdkRectangle rect, cairo_t* cr)
    267 {
    268     page()->drawingArea()->paint(IntRect(rect), cr);
    269 }
    270 
    271 void WebView::setSize(GtkWidget*, IntSize windowSize)
    272 {
    273     page()->drawingArea()->setSize(windowSize, IntSize());
    274 }
    275 
    276 void WebView::handleKeyboardEvent(GdkEventKey* event)
    277 {
    278     page()->handleKeyboardEvent(NativeWebKeyboardEvent(reinterpret_cast<GdkEvent*>(event)));
    279 }
    280 
    281 void WebView::handleMouseEvent(GdkEvent* event, int currentClickCount)
    282 {
    283     page()->handleMouseEvent(NativeWebMouseEvent(event, currentClickCount));
    284 }
    285 
    286 void WebView::handleWheelEvent(GdkEventScroll* event)
    287 {
    288     page()->handleWheelEvent(WebEventFactory::createWebWheelEvent(event));
    289 }
    290 
    291243void WebView::getEditorCommandsForKeyEvent(const NativeWebKeyboardEvent& event, Vector<WTF::String>& commandList)
    292244{
     
    335287}
    336288
    337 bool WebView::isActive()
    338 {
    339     return m_isPageActive;
    340 }
    341 
    342 void WebView::close()
    343 {
    344     page()->close();
    345 }
    346 
    347289// PageClient's pure virtual functions
    348290PassOwnPtr<DrawingAreaProxy> WebView::createDrawingAreaProxy()
    349291{
    350     return ChunkedUpdateDrawingAreaProxy::create(WEBKIT_WEB_VIEW_BASE(m_viewWidget), page());
     292    WebKitWebViewBase* view = WEBKIT_WEB_VIEW_BASE(m_viewWidget);
     293    return ChunkedUpdateDrawingAreaProxy::create(view, webkitWebViewBaseGetPage(view));
    351294}
    352295
  • trunk/Source/WebKit2/UIProcess/gtk/WebView.h

    r85196 r85197  
    4848    }
    4949
    50     WebPageProxy* page() const;
    51 
    52     void handleFocusInEvent(GtkWidget*);
    53     void handleFocusOutEvent(GtkWidget*);
    54 
    55     void paint(GtkWidget*, GdkRectangle, cairo_t*);
    56     void setSize(GtkWidget*, WebCore::IntSize);
    57     void handleKeyboardEvent(GdkEventKey*);
    58     void handleWheelEvent(GdkEventScroll*);
    59     void handleMouseEvent(GdkEvent*, int);
    60 
    6150    void addPendingEditorCommand(const char* command) { m_pendingEditorCommands.append(WTF::String(command)); }
    6251
    6352private:
    6453    WebView(GtkWidget*);
    65 
    66     bool isActive();
    67     void close();
    6854
    6955    // PageClient
     
    115101    // Members of WebView class
    116102    GtkWidget* m_viewWidget;
    117     bool m_isPageActive;
    118103    Vector<WTF::String> m_pendingEditorCommands;
    119104    GRefPtr<GtkWidget> m_nativeWidget;
Note: See TracChangeset for help on using the changeset viewer.