⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gdkproperty-x11.c

📁 linux下电话本所依赖的一些图形库
💻 C
📖 第 1 页 / 共 2 页
字号:
GdkAtomgdk_atom_intern (const gchar *atom_name, 		 gboolean     only_if_exists){  GdkAtom result;  virtual_atom_check_init ();    result = GDK_POINTER_TO_ATOM (g_hash_table_lookup (virtual_atom_hash, atom_name));  if (!result)    {      result = INDEX_TO_ATOM (virtual_atom_array->len);            g_ptr_array_add (virtual_atom_array, g_strdup (atom_name));      g_hash_table_insert (virtual_atom_hash, 			   g_ptr_array_index (virtual_atom_array,					      ATOM_TO_INDEX (result)),			   GDK_ATOM_TO_POINTER (result));    }  return result;}static G_CONST_RETURN char *get_atom_name (GdkAtom atom){  virtual_atom_check_init ();  if (ATOM_TO_INDEX (atom) < virtual_atom_array->len)    return g_ptr_array_index (virtual_atom_array, ATOM_TO_INDEX (atom));  else    return NULL;}gchar *gdk_atom_name (GdkAtom atom){  return g_strdup (get_atom_name (atom));}/** * gdk_x11_get_xatom_by_name_for_display: * @display: a #GdkDisplay * @atom_name: a string *  * Returns the X atom for a #GdkDisplay corresponding to @atom_name. * This function caches the result, so if called repeatedly it is much * faster than XInternAtom(), which is a round trip to the server each time. *  * Return value: a X atom for a #GdkDisplay * * Since: 2.2 **/Atomgdk_x11_get_xatom_by_name_for_display (GdkDisplay  *display,				       const gchar *atom_name){  g_return_val_if_fail (GDK_IS_DISPLAY (display), None);  return gdk_x11_atom_to_xatom_for_display (display,					    gdk_atom_intern (atom_name, FALSE));}/** * gdk_x11_get_xatom_by_name: * @atom_name: a string *  * Returns the X atom for GDK's default display corresponding to @atom_name. * This function caches the result, so if called repeatedly it is much * faster than XInternAtom(), which is a round trip to the server each time. *  * Return value: a X atom for GDK's default display. **/Atomgdk_x11_get_xatom_by_name (const gchar *atom_name){  return gdk_x11_get_xatom_by_name_for_display (gdk_display_get_default (),						atom_name);}/** * gdk_x11_get_xatom_name_for_display: * @display: the #GdkDisplay where @xatom is defined * @xatom: an X atom  *  * Returns the name of an X atom for its display. This * function is meant mainly for debugging, so for convenience, unlike * XAtomName() and gdk_atom_name(), the result doesn't need to * be freed.  * * Return value: name of the X atom; this string is owned by GDK, *   so it shouldn't be modifed or freed.  * * Since: 2.2 **/G_CONST_RETURN gchar *gdk_x11_get_xatom_name_for_display (GdkDisplay *display,				    Atom        xatom){  g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);  return get_atom_name (gdk_x11_xatom_to_atom_for_display (display, xatom));}/** * gdk_x11_get_xatom_name: * @xatom: an X atom for GDK's default display *  * Returns the name of an X atom for GDK's default display. This * function is meant mainly for debugging, so for convenience, unlike * <function>XAtomName()</function> and gdk_atom_name(), the result  * doesn't need to be freed. Also, this function will never return %NULL,  * even if @xatom is invalid. *  * Return value: name of the X atom; this string is owned by GTK+, *   so it shouldn't be modifed or freed.  **/G_CONST_RETURN gchar *gdk_x11_get_xatom_name (Atom xatom){  return get_atom_name (gdk_x11_xatom_to_atom (xatom));}gbooleangdk_property_get (GdkWindow   *window,		  GdkAtom      property,		  GdkAtom      type,		  gulong       offset,		  gulong       length,		  gint         pdelete,		  GdkAtom     *actual_property_type,		  gint        *actual_format_type,		  gint        *actual_length,		  guchar     **data){  GdkDisplay *display;  Atom ret_prop_type;  gint ret_format;  gulong ret_nitems;  gulong ret_bytes_after;  gulong get_length;  gulong ret_length;  guchar *ret_data;  Atom xproperty;  Atom xtype;  int res;  g_return_val_if_fail (!window || GDK_IS_WINDOW (window), FALSE);  if (!window)    {      GdkScreen *screen = gdk_screen_get_default ();      window = gdk_screen_get_root_window (screen);            GDK_NOTE (MULTIHEAD, g_message ("gdk_property_get(): window is NULL\n"));    }  if (GDK_WINDOW_DESTROYED (window))    return FALSE;  display = gdk_drawable_get_display (window);  xproperty = gdk_x11_atom_to_xatom_for_display (display, property);  if (type == GDK_NONE)    xtype = AnyPropertyType;  else    xtype = gdk_x11_atom_to_xatom_for_display (display, type);  ret_data = NULL;    /*    * Round up length to next 4 byte value.  Some code is in the (bad?)   * habit of passing G_MAXLONG as the length argument, causing an   * overflow to negative on the add.  In this case, we clamp the   * value to G_MAXLONG.   */  get_length = length + 3;  if (get_length > G_MAXLONG)    {      g_warning ("gdk_property_get(): length value has wrapped in calculation "		 "(did you pass G_MAXLONG?)");      get_length = G_MAXLONG;    }  /* To fail, either the user passed 0 or G_MAXULONG */  get_length = get_length / 4;  if (get_length == 0)    {      g_warning ("gdk_propery-get(): invalid length 0");      return FALSE;    }  res = XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display),			    GDK_WINDOW_XWINDOW (window), xproperty,			    offset, get_length, pdelete,			    xtype, &ret_prop_type, &ret_format,			    &ret_nitems, &ret_bytes_after,			    &ret_data);  if (res != Success || (ret_prop_type == None && ret_format == 0))    {      return FALSE;    }  if (actual_property_type)    *actual_property_type = gdk_x11_xatom_to_atom_for_display (display, ret_prop_type);  if (actual_format_type)    *actual_format_type = ret_format;  if ((xtype != AnyPropertyType) && (ret_prop_type != xtype))    {      XFree (ret_data);      g_warning ("Couldn't match property type %s to %s\n", 		 gdk_x11_get_xatom_name_for_display (display, ret_prop_type), 		 gdk_x11_get_xatom_name_for_display (display, xtype));      return FALSE;    }  /* FIXME: ignoring bytes_after could have very bad effects */  if (data)    {      if (ret_prop_type == XA_ATOM ||	  ret_prop_type == gdk_x11_get_xatom_by_name_for_display (display, "ATOM_PAIR"))	{	  /*	   * data is an array of X atom, we need to convert it	   * to an array of GDK Atoms	   */	  gint i;	  GdkAtom *ret_atoms = g_new (GdkAtom, ret_nitems);	  Atom *xatoms = (Atom *)ret_data;	  *data = (guchar *)ret_atoms;	  for (i = 0; i < ret_nitems; i++)	    ret_atoms[i] = gdk_x11_xatom_to_atom_for_display (display, xatoms[i]);	  	  if (actual_length)	    *actual_length = ret_nitems * sizeof (GdkAtom);	}      else	{	  switch (ret_format)	    {	    case 8:	      ret_length = ret_nitems;	      break;	    case 16:	      ret_length = sizeof(short) * ret_nitems;	      break;	    case 32:	      ret_length = sizeof(long) * ret_nitems;	      break;	    default:	      g_warning ("unknown property return format: %d", ret_format);	      XFree (ret_data);	      return FALSE;	    }	  	  *data = g_new (guchar, ret_length);	  memcpy (*data, ret_data, ret_length);	  if (actual_length)	    *actual_length = ret_length;	}    }  XFree (ret_data);  return TRUE;}voidgdk_property_change (GdkWindow    *window,		     GdkAtom       property,		     GdkAtom       type,		     gint          format,		     GdkPropMode   mode,		     const guchar *data,		     gint          nelements){  GdkDisplay *display;  Window xwindow;  Atom xproperty;  Atom xtype;  g_return_if_fail (!window || GDK_IS_WINDOW (window));  if (!window)    {      GdkScreen *screen;            screen = gdk_screen_get_default ();      window = gdk_screen_get_root_window (screen);            GDK_NOTE (MULTIHEAD, g_message ("gdk_property_change(): window is NULL\n"));    }  if (GDK_WINDOW_DESTROYED (window))    return;  display = gdk_drawable_get_display (window);    xproperty = gdk_x11_atom_to_xatom_for_display (display, property);  xtype = gdk_x11_atom_to_xatom_for_display (display, type);  xwindow = GDK_WINDOW_XID (window);  if (xtype == XA_ATOM ||      xtype == gdk_x11_get_xatom_by_name_for_display (display, "ATOM_PAIR"))    {      /*       * data is an array of GdkAtom, we need to convert it       * to an array of X Atoms       */      gint i;      GdkAtom *atoms = (GdkAtom*) data;      Atom *xatoms;      xatoms = g_new (Atom, nelements);      for (i = 0; i < nelements; i++)	xatoms[i] = gdk_x11_atom_to_xatom_for_display (display, atoms[i]);      XChangeProperty (GDK_DISPLAY_XDISPLAY (display), xwindow,		       xproperty, xtype,		       format, mode, (guchar *)xatoms, nelements);      g_free (xatoms);    }  else    XChangeProperty (GDK_DISPLAY_XDISPLAY (display), xwindow, xproperty, 		     xtype, format, mode, (guchar *)data, nelements);}voidgdk_property_delete (GdkWindow *window,		     GdkAtom    property){  g_return_if_fail (!window || GDK_IS_WINDOW (window));  if (!window)    {      GdkScreen *screen = gdk_screen_get_default ();      window = gdk_screen_get_root_window (screen);            GDK_NOTE (MULTIHEAD, 		g_message ("gdk_property_delete(): window is NULL\n"));    }  if (GDK_WINDOW_DESTROYED (window))    return;  XDeleteProperty (GDK_WINDOW_XDISPLAY (window), GDK_WINDOW_XWINDOW (window),		   gdk_x11_atom_to_xatom_for_display (GDK_WINDOW_DISPLAY (window),						      property));}#define __GDK_PROPERTY_X11_C__#include "gdkaliasdef.c"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -