void Widget::setCursor(const Cursor& cursor) { GdkCursor* platformCursor = cursor.platformCursor().get(); // http://bugs.webkit.org/show_bug.cgi?id=16388 // [GTK] Widget::setCursor() gets called frequently // // gdk_window_set_cursor() in certain GDK backends seems to be an // expensive operation, so avoid it if possible. if (platformCursor == lastSetCursor) return; gdk_window_set_cursor(gdkDrawable(platformWidget()) ? GDK_WINDOW(gdkDrawable(platformWidget())) : gtk_widget_get_window(GTK_WIDGET(root()->hostWindow()->platformPageClient())), platformCursor); lastSetCursor = platformCursor; }
void Widget::setCursor(const Cursor& cursor) { GdkCursor* pcur = cursor.impl(); // http://bugs.webkit.org/show_bug.cgi?id=16388 // [GTK] Widget::setCursor() gets called frequently // // gdk_window_set_cursor() in certain GDK backends seems to be an // expensive operation, so avoid it if possible. if (pcur == m_data->cursor) return; gdk_window_set_cursor(gdkDrawable(platformWidget()) ? GDK_WINDOW(gdkDrawable(platformWidget())) : GTK_WIDGET(root()->hostWindow()->platformWindow())->window, pcur); m_data->cursor = pcur; }