Changeset 46123 in webkit


Ignore:
Timestamp:
Jul 20, 2009 4:01:12 AM (15 years ago)
Author:
kov@webkit.org
Message:

2009-07-20 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>

Reviewed by Holger Freyther.

[GTK] Widget size negotiation
https://bugs.webkit.org/show_bug.cgi?id=17154

Implement proper size request for the WebView widget.

  • WebCoreSupport/ChromeClientGtk.cpp: (WebKit::ChromeClient::contentsSizeChanged):
  • webkit/webkitwebview.cpp: (webkit_web_view_size_request): (webkit_web_view_class_init):
Location:
trunk/WebKit/gtk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebKit/gtk/ChangeLog

    r46007 r46123  
     12009-07-20  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
     2
     3        Reviewed by Holger Freyther.
     4
     5        [GTK] Widget size negotiation
     6        https://bugs.webkit.org/show_bug.cgi?id=17154
     7
     8        Implement proper size request for the WebView widget.
     9
     10        * WebCoreSupport/ChromeClientGtk.cpp:
     11        (WebKit::ChromeClient::contentsSizeChanged):
     12        * webkit/webkitwebview.cpp:
     13        (webkit_web_view_size_request):
     14        (webkit_web_view_class_init):
     15
    1162009-07-16  Holger Hans Peter Freyther  <zecke@selfish.org>
    217
  • trunk/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp

    r46000 r46123  
    389389}
    390390
    391 void ChromeClient::contentsSizeChanged(Frame*, const IntSize&) const
    392 {
    393     notImplemented();
     391void ChromeClient::contentsSizeChanged(Frame* frame, const IntSize& size) const
     392{
     393    // We need to queue a resize request only if the size changed,
     394    // otherwise we get into an infinite loop!
     395    GtkWidget* widget = GTK_WIDGET(m_webView);
     396    if (GTK_WIDGET_REALIZED(widget) &&
     397        (widget->requisition.height != size.height()) &&
     398        (widget->requisition.width != size.width()))
     399        gtk_widget_queue_resize_no_redraw(widget);
    394400}
    395401
  • trunk/WebKit/gtk/webkit/webkitwebview.cpp

    r46007 r46123  
    546546}
    547547
     548static void webkit_web_view_size_request(GtkWidget* widget, GtkRequisition* requisition)
     549{
     550    WebKitWebView* web_view = WEBKIT_WEB_VIEW(widget);
     551    Frame* coreFrame = core(webkit_web_view_get_main_frame(web_view));
     552    if (!coreFrame)
     553        return;
     554
     555    FrameView* view = coreFrame->view();
     556    if (!view)
     557        return;
     558
     559    requisition->width = view->contentsWidth();
     560    requisition->height = view->contentsHeight();
     561}
     562
    548563static void webkit_web_view_size_allocate(GtkWidget* widget, GtkAllocation* allocation)
    549564{
     
    17951810    widgetClass->scroll_event = webkit_web_view_scroll_event;
    17961811    widgetClass->size_allocate = webkit_web_view_size_allocate;
     1812    widgetClass->size_request = webkit_web_view_size_request;
    17971813    widgetClass->popup_menu = webkit_web_view_popup_menu_handler;
    17981814    widgetClass->grab_focus = webkit_web_view_grab_focus;
Note: See TracChangeset for help on using the changeset viewer.