2008-03-07  Pierre-Luc Beaudoin  <pierre-luc.beaudoin@collabora.co.uk>

        Reviewed by Alp Toker.

        http://bugs.webkit.org/show_bug.cgi?id=17681
        GtkLauncher fails to render an element with position: fixed

        Implement the required parts of PlatformScreenGtk.

        * ChangeLog:
        * platform/gtk/PlatformScreenGtk.cpp:
        (WebCore::screenDepth):
        (WebCore::screenIsMonochrome):
        (WebCore::screenRect):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@30892 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/platform/gtk/PlatformScreenGtk.cpp b/WebCore/platform/gtk/PlatformScreenGtk.cpp
index 74c785f..69cebdc 100644
--- a/WebCore/platform/gtk/PlatformScreenGtk.cpp
+++ b/WebCore/platform/gtk/PlatformScreenGtk.cpp
@@ -39,8 +39,8 @@
 {
     ASSERT(widget->containingWindow() && GTK_WIDGET(widget->containingWindow())->window);
 
-    gint dummy, depth;
-    gdk_window_get_geometry(GTK_WIDGET(widget->containingWindow())->window, &dummy, &dummy, &dummy, &dummy, &depth);
+    gint depth;
+    gdk_window_get_geometry(GTK_WIDGET(widget->containingWindow())->window, 0, 0, 0, 0, &depth);
     return depth;
 }
 
@@ -50,16 +50,22 @@
     return 8;
 }
 
-bool screenIsMonochrome(Widget*)
+bool screenIsMonochrome(Widget* widget)
 {
-    notImplemented();
-    return false;
+    return screenDepth(widget) < 2;
 }
 
-FloatRect screenRect(Widget*)
+FloatRect screenRect(Widget* widget)
 {
-    notImplemented();
-    return FloatRect();
+    ASSERT(widget->containingWindow() && GTK_WIDGET(widget->containingWindow())->window);
+
+    GdkScreen* screen = gtk_widget_get_screen(GTK_WIDGET(widget->containingWindow()));
+    gint monitor = gdk_screen_get_monitor_at_window(screen, GTK_WIDGET(widget->containingWindow())->window);
+    GdkRectangle geometry;
+
+    gdk_screen_get_monitor_geometry(screen, monitor, &geometry);
+    
+    return FloatRect(geometry.x, geometry.y, geometry.width, geometry.height);
 }
 
 FloatRect screenAvailableRect(Widget*)