]> Pileus Git - ~andy/gtk/blobdiff - gdk/x11/gdkcursor-x11.c
docs/reference/gtk/tmpl/gtkfontseldlg.sgml, gdk/gdkwindow.c,
[~andy/gtk] / gdk / x11 / gdkcursor-x11.c
index 5b995ec689ab08cf0429eac5f09c5ed68f5bf606..f7ce4bf8646c909f97dfd662a397c69f609ba918 100644 (file)
 #include "gdkpixmap-x11.h"
 #include "gdkx.h"
 #include <gdk/gdkpixmap.h>
-#include "gdkscreen-x11.h"
 
 /**
- * gdk_cursor_new_for_screen:
- * @screen: the #GdkScreen where the cursor will be defined
+ * gdk_cursor_new_for_display:
+ * @display: the #GdkDisplay for which the cursor will be created
  * @cursor_type: cursor to create
  * 
  * Creates a new cursor from the set of builtin cursors.
  * Return value: a new #GdkCursor
  **/
 GdkCursor*
-gdk_cursor_new_for_screen (GdkScreen    *screen,
-                          GdkCursorType cursor_type)
+gdk_cursor_new_for_display (GdkDisplay    *display,
+                           GdkCursorType  cursor_type)
 {
   GdkCursorPrivate *private;
   GdkCursor *cursor;
   Cursor xcursor;
 
-  g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
+  g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
 
-  xcursor = XCreateFontCursor (GDK_SCREEN_XDISPLAY (screen), cursor_type);
+  if (display->closed)
+    xcursor = None;
+  else
+    xcursor = XCreateFontCursor (GDK_DISPLAY_XDISPLAY (display), cursor_type);
+  
   private = g_new (GdkCursorPrivate, 1);
-  private->screen = screen;
+  private->display = display;
   private->xcursor = xcursor;
   cursor = (GdkCursor *) private;
   cursor->type = cursor_type;
@@ -134,7 +137,7 @@ gdk_cursor_new_from_pixmap (GdkPixmap *source,
   Pixmap source_pixmap, mask_pixmap;
   Cursor xcursor;
   XColor xfg, xbg;
-  GdkScreen *screen;
+  GdkDisplay *display;
 
   g_return_val_if_fail (GDK_IS_PIXMAP (source), NULL);
   g_return_val_if_fail (GDK_IS_PIXMAP (mask), NULL);
@@ -143,7 +146,7 @@ gdk_cursor_new_from_pixmap (GdkPixmap *source,
 
   source_pixmap = GDK_PIXMAP_XID (source);
   mask_pixmap   = GDK_PIXMAP_XID (mask);
-  screen = GDK_PIXMAP_SCREEN (source);
+  display = GDK_PIXMAP_DISPLAY (source);
 
   xfg.pixel = fg->pixel;
   xfg.red = fg->red;
@@ -154,10 +157,13 @@ gdk_cursor_new_from_pixmap (GdkPixmap *source,
   xbg.blue = bg->blue;
   xbg.green = bg->green;
   
-  xcursor = XCreatePixmapCursor (GDK_SCREEN_XDISPLAY (screen),
-                                source_pixmap, mask_pixmap, &xfg, &xbg, x, y);
+  if (display->closed)
+    xcursor = None;
+  else
+    xcursor = XCreatePixmapCursor (GDK_DISPLAY_XDISPLAY (display),
+                                  source_pixmap, mask_pixmap, &xfg, &xbg, x, y);
   private = g_new (GdkCursorPrivate, 1);
-  private->screen = screen;
+  private->display = display;
   private->xcursor = xcursor;
   cursor = (GdkCursor *) private;
   cursor->type = GDK_CURSOR_IS_PIXMAP;
@@ -175,7 +181,8 @@ _gdk_cursor_destroy (GdkCursor *cursor)
   g_return_if_fail (cursor->ref_count == 0);
 
   private = (GdkCursorPrivate *) cursor;
-  XFreeCursor (GDK_SCREEN_XDISPLAY (private->screen), private->xcursor);
+  if (!private->display->closed && private->xcursor)
+    XFreeCursor (GDK_DISPLAY_XDISPLAY (private->display), private->xcursor);
 
   g_free (private);
 }
@@ -185,7 +192,7 @@ gdk_x11_cursor_get_xdisplay (GdkCursor *cursor)
 {
   g_return_val_if_fail (cursor != NULL, NULL);
 
-  return GDK_SCREEN_XDISPLAY(((GdkCursorPrivate *)cursor)->screen);
+  return GDK_DISPLAY_XDISPLAY(((GdkCursorPrivate *)cursor)->display);
 }
 
 Cursor
@@ -197,18 +204,18 @@ gdk_x11_cursor_get_xcursor (GdkCursor *cursor)
 }
 
 /** 
- * gdk_cursor_get_screen:
+ * gdk_cursor_get_display:
  * @cursor : a #GdkCursor.
  *
- * Returns the screen on which the GdkCursor is defined
+ * Returns the display on which the GdkCursor is defined
  *
- * Returns : the #GdkScreen associated to @cursor
+ * Returns : the #GdkDisplay associated to @cursor
  */
 
-GdkScreen *
-gdk_cursor_get_screen (GdkCursor *cursor)
+GdkDisplay *
+gdk_cursor_get_display (GdkCursor *cursor)
 {
   g_return_val_if_fail (cursor != NULL, NULL);
 
-  return ((GdkCursorPrivate *)cursor)->screen;
+  return ((GdkCursorPrivate *)cursor)->display;
 }