(29/01/02) Erwann Chenede - <erwann.chenede@sun.com>
* integrated multihead changes to work properly without the GDK_MULTIHEAD_SAFE flag.
This commit is contained in:
@@ -26,8 +26,9 @@ Obtains the Xlib window id of the root window of the default screen.
|
||||
The current display.
|
||||
</para>
|
||||
|
||||
@object:
|
||||
@Returns: an Xlib <type>Display*</type>.
|
||||
<!-- # Unused Parameters # -->
|
||||
@object:
|
||||
|
||||
|
||||
<!-- ##### MACRO GDK_WINDOW_XDISPLAY ##### -->
|
||||
|
||||
@@ -35,7 +35,7 @@ extern "C"
|
||||
typedef struct _GdkDisplayClass GdkDisplayClass;
|
||||
|
||||
#define GDK_TYPE_DISPLAY (gdk_display_get_type ())
|
||||
#define GDK_DISPLAY(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_DISPLAY, GdkDisplay))
|
||||
#define GDK_DISPLAY_OBJECT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_DISPLAY, GdkDisplay))
|
||||
#define GDK_DISPLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_DISPLAY, GdkDisplayClass))
|
||||
#define GDK_IS_DISPLAY(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_DISPLAY))
|
||||
#define GDK_IS_DISPLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_DISPLAY))
|
||||
|
||||
@@ -81,6 +81,9 @@ gdk_display_manager_set_default_display (GdkDisplayManager * display_mgr,
|
||||
g_return_if_fail (GDK_IS_DISPLAY_MANAGER (display_mgr));
|
||||
g_return_if_fail (GDK_IS_DISPLAY (default_display));
|
||||
display_mgr->default_display = default_display;
|
||||
#ifndef GDK_MULTIHEAD_SAFE
|
||||
gdk_display = GDK_DISPLAY_XDISPLAY (default_display);
|
||||
#endif
|
||||
}
|
||||
|
||||
GdkDisplay *
|
||||
|
||||
@@ -756,16 +756,40 @@ gdk_x11_get_depth (GdkDrawable *drawable)
|
||||
return gdk_drawable_get_depth (GDK_DRAWABLE_IMPL_X11 (drawable)->wrapper);
|
||||
}
|
||||
|
||||
|
||||
static GdkDrawable * get_impl_drawable (GdkDrawable *drawable)
|
||||
{
|
||||
GdkDrawable *impl;
|
||||
|
||||
if (GDK_IS_WINDOW (drawable))
|
||||
impl = ((GdkPixmapObject *)drawable)->impl;
|
||||
else if (GDK_IS_PIXMAP (drawable))
|
||||
impl = ((GdkPixmapObject *)drawable)->impl;
|
||||
else
|
||||
{
|
||||
g_warning (G_STRLOC " drawable is not a pixmap or window");
|
||||
return None;
|
||||
}
|
||||
return impl;
|
||||
}
|
||||
|
||||
|
||||
static GdkScreen*
|
||||
gdk_x11_get_screen (GdkDrawable *drawable)
|
||||
{
|
||||
return GDK_DRAWABLE_IMPL_X11 (drawable)->screen;
|
||||
if (GDK_IS_DRAWABLE_IMPL_X11 (drawable))
|
||||
return GDK_DRAWABLE_IMPL_X11 (drawable)->screen;
|
||||
else
|
||||
return GDK_DRAWABLE_IMPL_X11 (get_impl_drawable (drawable))->screen;
|
||||
}
|
||||
|
||||
static GdkDisplay*
|
||||
gdk_x11_get_display (GdkDrawable *drawable)
|
||||
{
|
||||
return gdk_screen_get_display (GDK_DRAWABLE_IMPL_X11 (drawable)->screen);
|
||||
if (GDK_IS_DRAWABLE_IMPL_X11 (drawable))
|
||||
return gdk_screen_get_display (GDK_DRAWABLE_IMPL_X11 (drawable)->screen);
|
||||
else
|
||||
return gdk_screen_get_display (GDK_DRAWABLE_IMPL_X11 (get_impl_drawable (drawable))->screen);
|
||||
}
|
||||
|
||||
static GdkVisual*
|
||||
|
||||
@@ -366,7 +366,7 @@ gdk_add_client_message_filter (GdkAtom message_type,
|
||||
filter->function = func;
|
||||
filter->data = data;
|
||||
|
||||
GDK_DISPLAY_IMPL_X11(display)->client_filters =
|
||||
GDK_DISPLAY_IMPL_X11(gdk_get_default_display())->client_filters =
|
||||
g_list_prepend (GDK_DISPLAY_IMPL_X11
|
||||
(gdk_get_default_display())->client_filters,
|
||||
filter);
|
||||
|
||||
@@ -34,7 +34,6 @@
|
||||
gboolean _gdk_use_xshm = TRUE; /* used as a cmd line arg */
|
||||
gchar *_gdk_display_name = NULL;
|
||||
GdkAtom _gdk_selection_property;
|
||||
|
||||
GdkWindowObject *_gdk_xgrab_window = NULL; /* Window that currently holds the
|
||||
* x pointer grab
|
||||
*/
|
||||
#ifndef GDK_MULTIHEAD_SAFE
|
||||
Display *gdk_display = NULL;
|
||||
#endif
|
||||
|
||||
@@ -29,12 +29,17 @@
|
||||
|
||||
#include <gdk/gdkprivate.h>
|
||||
#include <gdk/gdkcursor.h>
|
||||
#include <gdk/gdkdisplaymgr.h>
|
||||
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xutil.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#ifndef GDK_MULTIHEAD_SAFE
|
||||
extern Display *gdk_display;
|
||||
#endif
|
||||
|
||||
Display *gdk_x11_drawable_get_xdisplay (GdkDrawable *drawable);
|
||||
XID gdk_x11_drawable_get_xid (GdkDrawable *drawable);
|
||||
Display *gdk_x11_image_get_xdisplay (GdkImage *image);
|
||||
@@ -60,6 +65,8 @@ gint gdk_x11_get_default_screen (void);
|
||||
#define GDK_IMAGE_XDISPLAY(image) (gdk_x11_image_get_xdisplay (image))
|
||||
#define GDK_IMAGE_XIMAGE(image) (gdk_x11_image_get_ximage (image))
|
||||
|
||||
#define GDK_DISPLAY() gdk_get_default_display()
|
||||
|
||||
#ifdef INSIDE_GDK_X11
|
||||
|
||||
#include "gdkprivate-x11.h"
|
||||
|
||||
@@ -100,34 +100,19 @@ void
|
||||
gdk_xid_table_insert (XID *xid,
|
||||
gpointer data)
|
||||
{
|
||||
g_return_if_fail (xid != NULL);
|
||||
|
||||
if (!xid_ht)
|
||||
xid_ht = g_hash_table_new ((GHashFunc) gdk_xid_hash,
|
||||
(GEqualFunc) gdk_xid_equal);
|
||||
|
||||
g_hash_table_insert (xid_ht, xid, data);
|
||||
gdk_xid_table_insert_for_display (gdk_get_default_display (), xid, data);
|
||||
}
|
||||
|
||||
void
|
||||
gdk_xid_table_remove (XID xid)
|
||||
{
|
||||
if (!xid_ht)
|
||||
xid_ht = g_hash_table_new ((GHashFunc) gdk_xid_hash,
|
||||
(GEqualFunc) gdk_xid_equal);
|
||||
|
||||
g_hash_table_remove (xid_ht, &xid);
|
||||
gdk_xid_table_remove_for_display (gdk_get_default_display (), xid);
|
||||
}
|
||||
|
||||
gpointer
|
||||
gdk_xid_table_lookup (XID xid)
|
||||
{
|
||||
gpointer data = NULL;
|
||||
|
||||
if (xid_ht)
|
||||
data = g_hash_table_lookup (xid_ht, &xid);
|
||||
|
||||
return data;
|
||||
gdk_xid_table_lookup_for_display (gdk_get_default_display (), xid);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -803,7 +803,7 @@ gtk_rc_parse_string (const gchar *rc_string)
|
||||
{
|
||||
g_return_if_fail (rc_string != NULL);
|
||||
|
||||
gtk_rc_parse_any (gtk_rc_context_get (gtk_settings_get_for_screen (gdk_get_default_scren ())),
|
||||
gtk_rc_parse_any (gtk_rc_context_get (gtk_settings_get_for_screen (gdk_get_default_screen ())),
|
||||
"-", -1, rc_string); /* FIXME */
|
||||
}
|
||||
#endif
|
||||
@@ -916,7 +916,7 @@ gtk_rc_parse (const gchar *filename)
|
||||
{
|
||||
g_return_if_fail (filename != NULL);
|
||||
|
||||
gtk_rc_parse_file (gtk_rc_context_get (gtk_settings_get_for_screen (gdk_get_default_scren ())),
|
||||
gtk_rc_parse_file (gtk_rc_context_get (gtk_settings_get_for_screen (gdk_get_default_screen ())),
|
||||
filename, GTK_PATH_PRIO_RC, TRUE); /* FIXME */
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -4568,14 +4568,17 @@ gtk_widget_get_screen (GtkWidget *widget)
|
||||
return GTK_WINDOW (GTK_MENU (toplevel)->toplevel)->screen;
|
||||
if (GTK_IS_OPTION_MENU (toplevel))
|
||||
return GTK_WINDOW (GTK_MENU(GTK_OPTION_MENU (toplevel)->menu)->toplevel)->screen;
|
||||
|
||||
|
||||
|
||||
#ifdef GDK_MULTIHEAD_SAFE
|
||||
g_warning (G_STRLOC ": Can't get associated screen"
|
||||
" for a widget unless it is inside a toplevel GtkWindow\n"
|
||||
" widget type is %s associated top level type is %s",
|
||||
g_type_name (G_OBJECT_TYPE(G_OBJECT (widget))),
|
||||
g_type_name (G_OBJECT_TYPE(G_OBJECT (toplevel))));
|
||||
return NULL;
|
||||
#else
|
||||
return gdk_get_default_display ();
|
||||
#endif
|
||||
}
|
||||
/**
|
||||
* gtk_widget_has_screen:
|
||||
|
||||
Reference in New Issue
Block a user