2009-02-18 Xan Lopez <xan@gnome.org>
[WebKit-https.git] / WebCore / platform / gtk / WidgetGtk.cpp
index 82fed74b7061f6067d7ff3ce4abf04af48764697..c83300dbacc075b67cfd624d1725bfc0c5440a14 100644 (file)
 
 namespace WebCore {
 
-class WidgetPrivate {
-public:
-    GdkCursor* cursor;
-};
+static GdkCursor* lastSetCursor;
 
 Widget::Widget(PlatformWidget widget)
-    : m_data(new WidgetPrivate)
 {
     init(widget);
-    m_data->cursor = 0;
 }
 
 Widget::~Widget()
 {
     ASSERT(!parent());
     releasePlatformWidget();
-    delete m_data;
 }
 
 void Widget::setFocus()
@@ -65,11 +59,6 @@ void Widget::setFocus()
     gtk_widget_grab_focus(platformWidget() ? platformWidget() : GTK_WIDGET(root()->hostWindow()->platformWindow()));
 }
 
-Cursor Widget::cursor()
-{
-    return Cursor(m_data->cursor);
-}
-
 static GdkDrawable* gdkDrawable(PlatformWidget widget)
 {
     return widget ? widget->window : 0;
@@ -77,7 +66,7 @@ static GdkDrawable* gdkDrawable(PlatformWidget widget)
     
 void Widget::setCursor(const Cursor& cursor)
 {
-    GdkCursor* pcur = cursor.impl();
+    GdkCursor* platformCursor = cursor.impl();
 
     // http://bugs.webkit.org/show_bug.cgi?id=16388
     // [GTK] Widget::setCursor() gets called frequently
@@ -85,11 +74,11 @@ void Widget::setCursor(const Cursor& cursor)
     // gdk_window_set_cursor() in certain GDK backends seems to be an
     // expensive operation, so avoid it if possible.
 
-    if (pcur == m_data->cursor)
+    if (platformCursor == lastSetCursor)
         return;
 
-    gdk_window_set_cursor(gdkDrawable(platformWidget()) ? GDK_WINDOW(gdkDrawable(platformWidget())) : GTK_WIDGET(root()->hostWindow()->platformWindow())->window, pcur);
-    m_data->cursor = pcur;
+    gdk_window_set_cursor(gdkDrawable(platformWidget()) ? GDK_WINDOW(gdkDrawable(platformWidget())) : GTK_WIDGET(root()->hostWindow()->platformWindow())->window, platformCursor);
+    lastSetCursor = platformCursor;
 }
 
 void Widget::show()