]> Pileus Git - ~andy/gtk/blobdiff - gdk/x11/gdkim-x11.c
xi2: Improve device hierarchy handling
[~andy/gtk] / gdk / x11 / gdkim-x11.c
index 263b149f196c59b9ea99a5b70dd209ea17cdc3c5..389e653ec006446b92f0f4c65c87baf1a08deb23 100644 (file)
  * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
  */
 
-#include <locale.h>
-#include <stdlib.h>
+#include "config.h"
 
 #include "gdkx.h"
-#include "gdk.h"               /* For gdk_flush() */
-#include "gdkx.h"
-#include "gdkpixmap.h"
+#include "gdkmain.h"
 #include "gdkinternals.h"
 #include "gdkdisplay-x11.h"
 
-#if HAVE_CONFIG_H
-#  include <config.h>
-#  if STDC_HEADERS
-#    include <string.h>
-#  endif
-#endif
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
 
 
 /* If this variable is FALSE, it indicates that we should
@@ -65,11 +59,8 @@ _gdk_x11_initialize_locale (void)
   g_free (last_locale);
   last_locale = g_strdup (current_locale);
 
-  if (!XSupportsLocale ())
-    g_warning ("locale not supported by Xlib");
-  
-  if (!XSetLocaleModifiers (""))
-    g_warning ("can not set locale modifiers");
+  if (XSupportsLocale ())
+    XSetLocaleModifiers ("");
 
   if ((strcmp (current_locale, "C")) && (strcmp (current_locale, "POSIX")))
     {
@@ -110,143 +101,3 @@ gdk_set_locale (void)
   
   return setlocale (LC_ALL, NULL);
 }
-
-static GdkDisplay *
-find_a_display ()
-{
-  GdkDisplay *display = gdk_display_get_default ();
-
-  if (!display)
-    display = _gdk_displays->data;
-
-  return display;
-}
-
-/**
- * gdk_wcstombs:
- * @src: a wide character string.
- * 
- * Converts a wide character string to a multi-byte string.
- * (The function name comes from an acronym of 'Wide Character String TO
- * Multi-Byte String').
- * 
- * Return value: the multi-byte string corresponding to @src, or %NULL if the
- * conversion failed. The returned string should be freed with g_free() when no
- * longer needed.
- **/
-gchar *
-gdk_wcstombs (const GdkWChar *src)
-{
-  gchar *mbstr;
-
-  if (gdk_use_mb)
-    {
-      GdkDisplay *display = find_a_display ();
-      Display *xdisplay = GDK_DISPLAY_XDISPLAY (display);
-      XTextProperty tpr;
-
-      if (sizeof(wchar_t) != sizeof(GdkWChar))
-       {
-         gint i;
-         wchar_t *src_alt;
-         for (i=0; src[i]; i++);
-         src_alt = g_new (wchar_t, i+1);
-         for (; i>=0; i--)
-           src_alt[i] = src[i];
-         if (XwcTextListToTextProperty (xdisplay, &src_alt, 1, XTextStyle, &tpr)
-             != Success)
-           {
-             g_free (src_alt);
-             return NULL;
-           }
-         g_free (src_alt);
-       }
-      else
-       {
-         if (XwcTextListToTextProperty (xdisplay, (wchar_t**)&src, 1,
-                                        XTextStyle, &tpr) != Success)
-           {
-             return NULL;
-           }
-       }
-      /*
-       * We must copy the string into an area allocated by glib, because
-       * the string 'tpr.value' must be freed by XFree().
-       */
-      mbstr = g_strdup(tpr.value);
-      XFree (tpr.value);
-    }
-  else
-    {
-      gint length = 0;
-      gint i;
-
-      while (src[length] != 0)
-       length++;
-      
-      mbstr = g_new (gchar, length + 1);
-
-      for (i=0; i<length+1; i++)
-       mbstr[i] = src[i];
-    }
-
-  return mbstr;
-}
-/**
- * gdk_mbstowcs:
- * @dest: the space to place the converted wide character string into.
- * @src: the multi-byte string to convert, which must be nul-terminated.
- * @dest_max: the maximum number of wide characters to place in @dest.
- * 
- * Converts a multi-byte string to a wide character string.
- * (The function name comes from an acronym of 'Multi-Byte String TO Wide
- * Character String').
- * 
- * Return value: the number of wide characters written into @dest, or -1 if 
- *   the conversion failed.
- **/
-  
-gint
-gdk_mbstowcs (GdkWChar *dest, const gchar *src, gint dest_max)
-{
-  if (gdk_use_mb)
-    {
-      GdkDisplay *display = find_a_display ();
-      Display *xdisplay = GDK_DISPLAY_XDISPLAY (display);
-      XTextProperty tpr;
-      wchar_t **wstrs, *wstr_src;
-      gint num_wstrs;
-      gint len_cpy;
-      if (XmbTextListToTextProperty (xdisplay, (char **)&src, 1, XTextStyle,
-                                    &tpr)
-         != Success)
-       {
-         /* NoMem or LocaleNotSupp */
-         return -1;
-       }
-      if (XwcTextPropertyToTextList (xdisplay, &tpr, &wstrs, &num_wstrs)
-         != Success)
-       {
-         /* InvalidChar */
-         XFree(tpr.value);
-         return -1;
-       }
-      XFree(tpr.value);
-      if (num_wstrs == 0)
-       return 0;
-      wstr_src = wstrs[0];
-      for (len_cpy=0; len_cpy<dest_max && wstr_src[len_cpy]; len_cpy++)
-       dest[len_cpy] = wstr_src[len_cpy];
-      XwcFreeStringList (wstrs);
-      return len_cpy;
-    }
-  else
-    {
-      gint i;
-
-      for (i=0; i<dest_max && src[i]; i++)
-       dest[i] = src[i];
-
-      return i;
-    }
-}