Changeset 85196 in webkit
- Timestamp:
- Apr 28, 2011 9:39:18 AM (13 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r85193 r85196 1 2011-04-28 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 Reviewed by Martin Robinson. 4 5 [GTK] Create the page client in the view widget 6 https://bugs.webkit.org/show_bug.cgi?id=59679 7 8 * UIProcess/API/C/gtk/WKView.cpp: 9 (WKViewCreate): Simply create a new view widget and return it. 10 (WKViewGetPage): Use webkitWebViewBaseGetPage(). 11 * UIProcess/API/gtk/WebKitWebViewBase.cpp: 12 (webkitWebViewBaseFinalize): Use finalize instead of dispose to 13 make sure it's called only once, and release the private struct too. 14 (webkitWebViewBaseInit): Create the page client. 15 (webkitWebViewBaseClassInit): Don't use GObject private data structure. 16 (webkitWebViewBaseCreate): New method to create a 17 WebKitWebViewBase for a given context and page group. 18 (webkitWebViewBaseGetWebViewInstance): 19 (webkitWebViewBaseGetPage): 20 * UIProcess/API/gtk/WebKitWebViewBase.h: 21 * UIProcess/gtk/WebView.cpp: 22 (WebKit::WebView::page): Get the page from the view widget. 23 (WebKit::WebView::handleFocusInEvent): Ditto. 24 (WebKit::WebView::handleFocusOutEvent): Ditto. 25 (WebKit::WebView::WebView): Page client is now created with a view widget. 26 (WebKit::WebView::paint): Get the page from the view widget. 27 (WebKit::WebView::setSize): Ditto. 28 (WebKit::WebView::handleKeyboardEvent): Ditto. 29 (WebKit::WebView::handleMouseEvent): Ditto. 30 (WebKit::WebView::handleWheelEvent): Ditto. 31 (WebKit::WebView::close): Ditto. 32 (WebKit::WebView::createDrawingAreaProxy): Ditto. 33 * UIProcess/gtk/WebView.h: 34 (WebKit::WebView::create): The page client will be created as 35 private by the view widget, so it doesn't need to be ref counted, 36 use PassOwnPtr instead of PassRefPtr. 37 1 38 2011-04-28 Carlos Garcia Campos <cgarcia@igalia.com> 2 39 -
trunk/Source/WebKit2/UIProcess/API/C/gtk/WKView.cpp
r85192 r85196 41 41 WKViewRef WKViewCreate(WKContextRef contextRef, WKPageGroupRef pageGroupRef) 42 42 { 43 RefPtr<WebView> view = WebView::create(toImpl(contextRef), toImpl(pageGroupRef)); 44 return toAPI(WEBKIT_WEB_VIEW_BASE(view.release().leakRef()->window())); 43 return toAPI(webkitWebViewBaseCreate(toImpl(contextRef), toImpl(pageGroupRef))); 45 44 } 46 45 47 46 WKPageRef WKViewGetPage(WKViewRef viewRef) 48 47 { 49 return toAPI(webkitWebViewBaseGet WebViewInstance(toImpl(viewRef))->page());48 return toAPI(webkitWebViewBaseGetPage(toImpl(viewRef))); 50 49 } 51 50 -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp
r85193 r85196 33 33 #include "NotImplemented.h" 34 34 #include "RefPtrCairo.h" 35 #include "WebContext.h" 36 #include "WebPageProxy.h" 37 #include <WebKit2/WKContext.h> 35 38 36 39 using namespace WebKit; … … 40 43 41 44 struct _WebKitWebViewBasePrivate { 42 WebView* webViewInstance; 45 OwnPtr<WebView> webViewInstance; 46 RefPtr<WebPageProxy> page; 43 47 GtkIMContext* imContext; 44 48 gint currentClickCount; … … 107 111 } 108 112 109 static void webkitWebViewBase Dispose(GObject* gobject)113 static void webkitWebViewBaseFinalize(GObject* gobject) 110 114 { 111 115 WebKitWebViewBase* webkitWebViewBase = WEBKIT_WEB_VIEW_BASE(gobject); … … 117 121 } 118 122 119 G_OBJECT_CLASS(webkitWebViewBaseParentClass)->dispose(gobject); 123 priv->page->close(); 124 125 delete priv; 126 webkitWebViewBase->priv = 0; 127 128 G_OBJECT_CLASS(webkitWebViewBaseParentClass)->finalize(gobject); 120 129 } 121 130 122 131 static void webkitWebViewBaseInit(WebKitWebViewBase* webkitWebViewBase) 123 132 { 124 WebKitWebViewBasePrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(webkitWebViewBase, WEBKIT_TYPE_WEB_VIEW_BASE, WebKitWebViewBasePrivate);133 WebKitWebViewBasePrivate* priv = new WebKitWebViewBasePrivate(); 125 134 webkitWebViewBase->priv = priv; 126 135 … … 131 140 priv->previousClickButton = 0; 132 141 priv->previousClickTime = 0; 142 143 priv->webViewInstance = WebView::create(GTK_WIDGET(webkitWebViewBase)); 133 144 } 134 145 … … 335 346 336 347 GObjectClass* gobjectClass = G_OBJECT_CLASS(webkitWebViewBaseClass); 337 gobjectClass-> dispose = webkitWebViewBaseDispose;348 gobjectClass->finalize = webkitWebViewBaseFinalize; 338 349 339 350 GtkContainerClass* containerClass = GTK_CONTAINER_CLASS(webkitWebViewBaseClass); 340 351 containerClass->add = webkitWebViewBaseContainerAdd; 341 342 g_type_class_add_private(webkitWebViewBaseClass, sizeof(WebKitWebViewBasePrivate));343 352 } 344 353 … … 362 371 } 363 372 373 WebKitWebViewBase* webkitWebViewBaseCreate(WebContext* context, WebPageGroup* pageGroup) 374 { 375 WebKitWebViewBase* webkitWebViewBase = WEBKIT_WEB_VIEW_BASE(g_object_new(WEBKIT_TYPE_WEB_VIEW_BASE, NULL)); 376 WebKitWebViewBasePrivate* priv = webkitWebViewBase->priv; 377 378 priv->page = context->createWebPage(priv->webViewInstance.get(), pageGroup); 379 priv->page->initializeWebPage(); 380 381 return webkitWebViewBase; 382 } 383 364 384 WebView* webkitWebViewBaseGetWebViewInstance(WebKitWebViewBase* webkitWebViewBase) 365 385 { 366 return webkitWebViewBase->priv->webViewInstance; 367 } 368 369 void webkitWebViewBaseSetWebViewInstance(WebKitWebViewBase* webkitWebViewBase, WebView* webViewInstance) 370 { 371 webkitWebViewBase->priv->webViewInstance = webViewInstance; 386 return webkitWebViewBase->priv->webViewInstance.get(); 372 387 } 373 388 … … 379 394 WebPageProxy* webkitWebViewBaseGetPage(WebKitWebViewBase* webkitWebViewBase) 380 395 { 381 return webkitWebViewBase->priv-> webViewInstance->page();382 } 396 return webkitWebViewBase->priv->page.get(); 397 } -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.h
r85193 r85196 60 60 GType webkitWebViewBaseGetType(); 61 61 62 WebKitWebViewBase* webkitWebViewBaseCreate(WebContext*, WebPageGroup*); 63 62 64 WebView* webkitWebViewBaseGetWebViewInstance(WebKitWebViewBase*); 63 64 void webkitWebViewBaseSetWebViewInstance(WebKitWebViewBase*, WebView*);65 65 66 66 GtkIMContext* webkitWebViewBaseGetIMContext(WebKitWebViewBase*); -
trunk/Source/WebKit2/UIProcess/gtk/WebView.cpp
r85193 r85196 46 46 namespace WebKit { 47 47 48 WebPageProxy* WebView::page() const 49 { 50 return webkitWebViewBaseGetPage(WEBKIT_WEB_VIEW_BASE(m_viewWidget)); 51 } 52 48 53 void WebView::handleFocusInEvent(GtkWidget* widget) 49 54 { 50 55 if (!(m_isPageActive)) { 51 56 m_isPageActive = true; 52 m_page->viewStateDidChange(WebPageProxy::ViewWindowIsActive);57 page()->viewStateDidChange(WebPageProxy::ViewWindowIsActive); 53 58 } 54 59 55 m_page->viewStateDidChange(WebPageProxy::ViewIsFocused);60 page()->viewStateDidChange(WebPageProxy::ViewIsFocused); 56 61 } 57 62 … … 59 64 { 60 65 m_isPageActive = false; 61 m_page->viewStateDidChange(WebPageProxy::ViewWindowIsActive);66 page()->viewStateDidChange(WebPageProxy::ViewWindowIsActive); 62 67 } 63 68 … … 238 243 }; 239 244 240 WebView::WebView(WebContext* context, WebPageGroup* pageGroup) 241 : m_isPageActive(true) 245 WebView::WebView(GtkWidget* viewWidget) 246 : m_viewWidget(viewWidget) 247 , m_isPageActive(true) 242 248 , m_nativeWidget(gtk_text_view_new()) 243 249 { 244 m_page = context->createWebPage(this, pageGroup);245 246 m_viewWidget = static_cast<GtkWidget*>(g_object_new(WEBKIT_TYPE_WEB_VIEW_BASE, NULL));247 ASSERT(m_viewWidget);248 249 m_page->initializeWebPage();250 251 WebKitWebViewBase* webViewWidget = WEBKIT_WEB_VIEW_BASE(m_viewWidget);252 webkitWebViewBaseSetWebViewInstance(webViewWidget, this);253 254 250 g_signal_connect(m_nativeWidget.get(), "backspace", G_CALLBACK(backspaceCallback), this); 255 251 g_signal_connect(m_nativeWidget.get(), "cut-clipboard", G_CALLBACK(cutClipboardCallback), this); … … 270 266 void WebView::paint(GtkWidget* widget, GdkRectangle rect, cairo_t* cr) 271 267 { 272 m_page->drawingArea()->paint(IntRect(rect), cr);268 page()->drawingArea()->paint(IntRect(rect), cr); 273 269 } 274 270 275 271 void WebView::setSize(GtkWidget*, IntSize windowSize) 276 272 { 277 m_page->drawingArea()->setSize(windowSize, IntSize());273 page()->drawingArea()->setSize(windowSize, IntSize()); 278 274 } 279 275 280 276 void WebView::handleKeyboardEvent(GdkEventKey* event) 281 277 { 282 m_page->handleKeyboardEvent(NativeWebKeyboardEvent(reinterpret_cast<GdkEvent*>(event)));278 page()->handleKeyboardEvent(NativeWebKeyboardEvent(reinterpret_cast<GdkEvent*>(event))); 283 279 } 284 280 285 281 void WebView::handleMouseEvent(GdkEvent* event, int currentClickCount) 286 282 { 287 m_page->handleMouseEvent(NativeWebMouseEvent(event, currentClickCount));283 page()->handleMouseEvent(NativeWebMouseEvent(event, currentClickCount)); 288 284 } 289 285 290 286 void WebView::handleWheelEvent(GdkEventScroll* event) 291 287 { 292 m_page->handleWheelEvent(WebEventFactory::createWebWheelEvent(event));288 page()->handleWheelEvent(WebEventFactory::createWebWheelEvent(event)); 293 289 } 294 290 … … 346 342 void WebView::close() 347 343 { 348 m_page->close();344 page()->close(); 349 345 } 350 346 … … 352 348 PassOwnPtr<DrawingAreaProxy> WebView::createDrawingAreaProxy() 353 349 { 354 return ChunkedUpdateDrawingAreaProxy::create(WEBKIT_WEB_VIEW_BASE(m_viewWidget), m_page.get());350 return ChunkedUpdateDrawingAreaProxy::create(WEBKIT_WEB_VIEW_BASE(m_viewWidget), page()); 355 351 } 356 352 -
trunk/Source/WebKit2/UIProcess/gtk/WebView.h
r85193 r85196 34 34 #include <WebCore/IntSize.h> 35 35 #include <gtk/gtk.h> 36 #include <wtf/PassRefPtr.h>37 #include <wtf/RefCounted.h>38 #include <wtf/RefPtr.h>39 36 40 37 namespace WebKit { … … 43 40 class WebPageNamespace; 44 41 45 class WebView : public RefCounted<WebView>, publicPageClient {42 class WebView : public PageClient { 46 43 public: 47 44 ~WebView(); 48 static Pass RefPtr<WebView> create(WebContext* context, WebPageGroup* pageGroup)45 static PassOwnPtr<WebView> create(GtkWidget* viewWidget) 49 46 { 50 return adopt Ref(new WebView(context, pageGroup));47 return adoptPtr(new WebView(viewWidget)); 51 48 } 52 49 53 GtkWidget* window() const { return m_viewWidget; } 54 55 WebPageProxy* page() const { return m_page.get(); } 50 WebPageProxy* page() const; 56 51 57 52 void handleFocusInEvent(GtkWidget*); … … 67 62 68 63 private: 69 WebView( WebContext*, WebPageGroup*);64 WebView(GtkWidget*); 70 65 71 66 bool isActive(); … … 121 116 GtkWidget* m_viewWidget; 122 117 bool m_isPageActive; 123 RefPtr<WebPageProxy> m_page;124 118 Vector<WTF::String> m_pendingEditorCommands; 125 119 GRefPtr<GtkWidget> m_nativeWidget;
Note: See TracChangeset
for help on using the changeset viewer.