Changeset 52246 in webkit


Ignore:
Timestamp:
Dec 17, 2009 4:02:21 AM (14 years ago)
Author:
kov@webkit.org
Message:

WebCore

2009-12-17 Martin Robinson <martin.james.robinson@gmail.com>

Reviewed by Gustavo Noronha.

[GTK] WebKit GTK needs a wrapper for ref counted glib/gobject structs
https://bugs.webkit.org/show_bug.cgi?id=21599

Add GRefPtr support for GTK types to WebCore, as JSC does not link against
GTK+. Also convert PopupMenu::m_poup from a raw pointer to a GRefPtr.

No new tests as functionality has not changed.

  • GNUmakefile.am:
  • platform/PopupMenu.h:
  • platform/gtk/GRefPtrGtk.cpp: Added. (WTF::refGPtr): (WTF::derefGPtr):
  • platform/gtk/GRefPtrGtk.h: Added.
  • platform/gtk/PopupMenuGtk.cpp: (WebCore::PopupMenu::PopupMenu): (WebCore::PopupMenu::~PopupMenu): (WebCore::PopupMenu::show): (WebCore::PopupMenu::hide): (WebCore::PopupMenu::menuRemoveItem):

JavaScriptCore

2009-12-17 Martin Robinson <martin.james.robinson@gmail.com>

Reviewed by Gustavo Noronha.

[GTK] WebKit GTK needs a wrapper for ref counted glib/gobject structs
https://bugs.webkit.org/show_bug.cgi?id=21599

Implement GRefPtr, a smart pointer for reference counted GObject types.

  • GNUmakefile.am:
  • wtf/gtk/GOwnPtr.cpp: (WTF::GDir):
  • wtf/gtk/GRefPtr.h: Added. (WTF::): (WTF::GRefPtr::GRefPtr): (WTF::GRefPtr::~GRefPtr): (WTF::GRefPtr::clear): (WTF::GRefPtr::get): (WTF::GRefPtr::operator*): (WTF::GRefPtr::operator->): (WTF::GRefPtr::operator!): (WTF::GRefPtr::operator UnspecifiedBoolType): (WTF::GRefPtr::hashTableDeletedValue): (WTF::::operator): (WTF::::swap): (WTF::swap): (WTF::operator==): (WTF::operator!=): (WTF::static_pointer_cast): (WTF::const_pointer_cast): (WTF::getPtr): (WTF::adoptGRef): (WTF::refGPtr): (WTF::derefGPtr):

WebKit/gtk

2009-12-17 Martin Robinson <martin.james.robinson@gmail.com>

Reviewed by Gustavo Noronha.

[GTK] WebKit GTK needs a wrapper for ref counted glib/gobject structs
https://bugs.webkit.org/show_bug.cgi?id=21599

Convert a use of GOwnPtr for a reference counted type to GRefPtr.

  • WebCoreSupport/FrameLoaderClientGtk.cpp: (WebKit::FrameLoaderClient::createPlugin):
Location:
trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/ChangeLog

    r52244 r52246  
     12009-12-17  Martin Robinson  <martin.james.robinson@gmail.com>
     2
     3        Reviewed by Gustavo Noronha.
     4
     5        [GTK] WebKit GTK needs a wrapper for ref counted glib/gobject structs
     6        https://bugs.webkit.org/show_bug.cgi?id=21599
     7
     8        Implement GRefPtr, a smart pointer for reference counted GObject types.
     9
     10        * GNUmakefile.am:
     11        * wtf/gtk/GOwnPtr.cpp:
     12        (WTF::GDir):
     13        * wtf/gtk/GRefPtr.h: Added.
     14        (WTF::):
     15        (WTF::GRefPtr::GRefPtr):
     16        (WTF::GRefPtr::~GRefPtr):
     17        (WTF::GRefPtr::clear):
     18        (WTF::GRefPtr::get):
     19        (WTF::GRefPtr::operator*):
     20        (WTF::GRefPtr::operator->):
     21        (WTF::GRefPtr::operator!):
     22        (WTF::GRefPtr::operator UnspecifiedBoolType):
     23        (WTF::GRefPtr::hashTableDeletedValue):
     24        (WTF::::operator):
     25        (WTF::::swap):
     26        (WTF::swap):
     27        (WTF::operator==):
     28        (WTF::operator!=):
     29        (WTF::static_pointer_cast):
     30        (WTF::const_pointer_cast):
     31        (WTF::getPtr):
     32        (WTF::adoptGRef):
     33        (WTF::refGPtr):
     34        (WTF::derefGPtr):
     35
    1362009-12-17  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
    237
  • trunk/JavaScriptCore/GNUmakefile.am

    r52244 r52246  
    292292        JavaScriptCore/wtf/gtk/GOwnPtr.cpp \
    293293        JavaScriptCore/wtf/gtk/GOwnPtr.h \
     294        JavaScriptCore/wtf/gtk/GRefPtr.h \
    294295        JavaScriptCore/wtf/gtk/MainThreadGtk.cpp \
    295296        JavaScriptCore/wtf/gtk/ThreadingGtk.cpp \
  • trunk/JavaScriptCore/wtf/gtk/GOwnPtr.cpp

    r51423 r52246  
    5858        g_dir_close(ptr);
    5959}
    60 
    61 template <> void freeOwnedGPtr<GHashTable>(GHashTable* ptr)
    62 {
    63     if (ptr)
    64         g_hash_table_unref(ptr);
    65 }
    66 
    6760} // namespace WTF
  • trunk/WebCore/ChangeLog

    r52245 r52246  
     12009-12-17  Martin Robinson  <martin.james.robinson@gmail.com>
     2
     3        Reviewed by Gustavo Noronha.
     4
     5        [GTK] WebKit GTK needs a wrapper for ref counted glib/gobject structs
     6        https://bugs.webkit.org/show_bug.cgi?id=21599
     7
     8        Add GRefPtr support for GTK types to WebCore, as JSC does not link against
     9        GTK+. Also convert PopupMenu::m_poup from a raw pointer to a GRefPtr.
     10
     11        No new tests as functionality has not changed.
     12
     13        * GNUmakefile.am:
     14        * platform/PopupMenu.h:
     15        * platform/gtk/GRefPtrGtk.cpp: Added.
     16        (WTF::refGPtr):
     17        (WTF::derefGPtr):
     18        * platform/gtk/GRefPtrGtk.h: Added.
     19        * platform/gtk/PopupMenuGtk.cpp:
     20        (WebCore::PopupMenu::PopupMenu):
     21        (WebCore::PopupMenu::~PopupMenu):
     22        (WebCore::PopupMenu::show):
     23        (WebCore::PopupMenu::hide):
     24        (WebCore::PopupMenu::menuRemoveItem):
     25
    1262009-12-17  Evan Martin  <evan@chromium.org>
    227
  • trunk/WebCore/GNUmakefile.am

    r52245 r52246  
    19821982        WebCore/platform/gtk/FileChooserGtk.cpp \
    19831983        WebCore/platform/gtk/FileSystemGtk.cpp \
     1984        WebCore/platform/gtk/GRefPtrGtk.cpp \
     1985        WebCore/platform/gtk/GRefPtrGtk.h \
    19841986        WebCore/platform/gtk/GtkPluginWidget.cpp \
    19851987        WebCore/platform/gtk/GtkPluginWidget.h \
  • trunk/WebCore/platform/PopupMenu.h

    r52199 r52246  
    4949typedef struct _GtkMenuItem GtkMenuItem;
    5050typedef struct _GtkWidget GtkWidget;
     51#include "GRefPtrGtk.h"
    5152#include <wtf/HashMap.h>
    5253#include <glib.h>
     
    174175#elif PLATFORM(GTK)
    175176    IntPoint m_menuPosition;
    176     GtkMenu* m_popup;
     177    GRefPtr<GtkMenu> m_popup;
    177178    HashMap<GtkWidget*, int> m_indexMap;
    178179    static void menuItemActivated(GtkMenuItem* item, PopupMenu*);
  • trunk/WebCore/platform/gtk/PopupMenuGtk.cpp

    r48511 r52246  
    3636PopupMenu::PopupMenu(PopupMenuClient* client)
    3737    : m_popupClient(client)
    38     , m_popup(0)
    3938{
    4039}
     
    4342{
    4443    if (m_popup) {
    45         g_signal_handlers_disconnect_matched(m_popup, G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this);
     44        g_signal_handlers_disconnect_matched(m_popup.get(), G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this);
    4645        hide();
    47         g_object_unref(m_popup);
    4846    }
    4947}
     
    5553    if (!m_popup) {
    5654        m_popup = GTK_MENU(gtk_menu_new());
    57         g_object_ref_sink(G_OBJECT(m_popup));
    58         g_signal_connect(m_popup, "unmap", G_CALLBACK(menuUnmapped), this);
     55        g_signal_connect(m_popup.get(), "unmap", G_CALLBACK(menuUnmapped), this);
    5956    } else
    60         gtk_container_foreach(GTK_CONTAINER(m_popup), reinterpret_cast<GtkCallback>(menuRemoveItem), this);
     57        gtk_container_foreach(GTK_CONTAINER(m_popup.get()), reinterpret_cast<GtkCallback>(menuRemoveItem), this);
    6158
    6259    int x, y;
     
    7976        // FIXME: Apply the PopupMenuStyle from client()->itemStyle(i)
    8077        gtk_widget_set_sensitive(item, client()->itemIsEnabled(i));
    81         gtk_menu_shell_append(GTK_MENU_SHELL(m_popup), item);
     78        gtk_menu_shell_append(GTK_MENU_SHELL(m_popup.get()), item);
    8279        gtk_widget_show(item);
    8380    }
    8481
    85     gtk_menu_set_active(m_popup, index);
     82    gtk_menu_set_active(m_popup.get(), index);
    8683
    8784
    8885    // The size calls are directly copied from gtkcombobox.c which is LGPL
    8986    GtkRequisition requisition;
    90     gtk_widget_set_size_request(GTK_WIDGET(m_popup), -1, -1);
    91     gtk_widget_size_request(GTK_WIDGET(m_popup), &requisition);
    92     gtk_widget_set_size_request(GTK_WIDGET(m_popup), MAX(rect.width(), requisition.width), -1);
     87    gtk_widget_set_size_request(GTK_WIDGET(m_popup.get()), -1, -1);
     88    gtk_widget_size_request(GTK_WIDGET(m_popup.get()), &requisition);
     89    gtk_widget_set_size_request(GTK_WIDGET(m_popup.get()), std::max(rect.width(), requisition.width), -1);
    9390
    94     GList* children = GTK_MENU_SHELL(m_popup)->children;
     91    GList* children = GTK_MENU_SHELL(m_popup.get())->children;
    9592    if (size)
    9693        for (int i = 0; i < size; i++) {
     
    104101
    105102            children = g_list_next(children);
    106         }
    107     else
    108         // Center vertically the empty popup in the combo box area
    109         m_menuPosition.setY(m_menuPosition.y() - rect.height() / 2);
     103        } else
     104            // Center vertically the empty popup in the combo box area
     105            m_menuPosition.setY(m_menuPosition.y() - rect.height() / 2);
    110106
    111     gtk_menu_popup(m_popup, NULL, NULL, reinterpret_cast<GtkMenuPositionFunc>(menuPositionFunction), this, 0, gtk_get_current_event_time());
     107    gtk_menu_popup(m_popup.get(), 0, 0, reinterpret_cast<GtkMenuPositionFunc>(menuPositionFunction), this, 0, gtk_get_current_event_time());
    112108}
    113109
     
    115111{
    116112    ASSERT(m_popup);
    117     gtk_menu_popdown(m_popup);
     113    gtk_menu_popdown(m_popup.get());
    118114}
    119115
     
    151147{
    152148    ASSERT(that->m_popup);
    153     gtk_container_remove(GTK_CONTAINER(that->m_popup), widget);
     149    gtk_container_remove(GTK_CONTAINER(that->m_popup.get()), widget);
    154150}
    155151
  • trunk/WebKit/gtk/ChangeLog

    r52215 r52246  
     12009-12-17  Martin Robinson  <martin.james.robinson@gmail.com>
     2
     3        Reviewed by Gustavo Noronha.
     4
     5        [GTK] WebKit GTK needs a wrapper for ref counted glib/gobject structs
     6        https://bugs.webkit.org/show_bug.cgi?id=21599
     7
     8        Convert a use of GOwnPtr for a reference counted type to GRefPtr.
     9
     10        * WebCoreSupport/FrameLoaderClientGtk.cpp:
     11        (WebKit::FrameLoaderClient::createPlugin):
     12
    1132009-12-16  Dan Winship  <danw@gnome.org>
    214
  • trunk/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp

    r51957 r52246  
    3434#include "FrameTree.h"
    3535#include "GOwnPtr.h"
     36#include "GRefPtr.h"
    3637#include "GtkPluginWidget.h"
    3738#include "HTMLAppletElement.h"
     
    441442
    442443    ASSERT(paramNames.size() == paramValues.size());
    443     GOwnPtr<GHashTable> hash(g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free));
     444    GRefPtr<GHashTable> hash = adoptGRef(g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free));
    444445    for (unsigned i = 0; i < paramNames.size(); ++i) {
    445446        g_hash_table_insert(hash.get(),
Note: See TracChangeset for help on using the changeset viewer.