]> Pileus Git - ~andy/gtk/blobdiff - gdk/gdkkeys.c
Move documentation to inline comments: GtkMountOperation
[~andy/gtk] / gdk / gdkkeys.c
index 03ad2da00390bd9d05dd156de346ae291efe3e17..6953b4642683971f3f6448bb49fc7b84fb796ac4 100644 (file)
  * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
  */
 
+#include "config.h"
+
+#include "gdkdisplay.h"
 #include "gdkkeys.h"
-#include <config.h>
+#include "gdkalias.h"
 
 enum {
   DIRECTION_CHANGED,
+  KEYS_CHANGED,
+  STATE_CHANGED,
   LAST_SIGNAL
 };
 
-static void gdk_keymap_init       (GdkKeymap      *keymap);
-static void gdk_keymap_class_init (GdkKeymapClass *klass);
-
-static gpointer parent_class = NULL;
-
 static guint signals[LAST_SIGNAL] = { 0 };
 
-GType
-gdk_keymap_get_type (void)
-{
-  static GType object_type = 0;
-
-  if (!object_type)
-    {
-      static const GTypeInfo object_info =
-      {
-        sizeof (GdkKeymapClass),
-        (GBaseInitFunc) NULL,
-        (GBaseFinalizeFunc) NULL,
-        (GClassInitFunc) gdk_keymap_class_init,
-        NULL,           /* class_finalize */
-        NULL,           /* class_data */
-        sizeof (GdkKeymap),
-        0,              /* n_preallocs */
-        (GInstanceInitFunc) gdk_keymap_init,
-      };
-      
-      object_type = g_type_register_static (G_TYPE_OBJECT,
-                                            "GdkKeymap",
-                                            &object_info, 0);
-    }
-  
-  return object_type;
-}
-
-static void
-gdk_keymap_init (GdkKeymap *keymap)
-{
-
-}
+G_DEFINE_TYPE (GdkKeymap, gdk_keymap, G_TYPE_OBJECT)
 
 static void
 gdk_keymap_class_init (GdkKeymapClass *klass)
 {
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
-  parent_class = g_type_class_peek_parent (klass);
-
+  /**
+   * GdkKeymap::direction-changed:
+   * @keymap: the object on which the signal is emitted
+   * 
+   * The ::direction-changed signal gets emitted when the direction of
+   * the keymap changes. 
+   *
+   * Since: 2.0
+   */
   signals[DIRECTION_CHANGED] =
-    g_signal_new ("direction_changed",
+    g_signal_new ("direction-changed",
                  G_OBJECT_CLASS_TYPE (object_class),
                  G_SIGNAL_RUN_LAST,
                  G_STRUCT_OFFSET (GdkKeymapClass, direction_changed),
@@ -89,6 +64,49 @@ gdk_keymap_class_init (GdkKeymapClass *klass)
                  g_cclosure_marshal_VOID__VOID,
                  G_TYPE_NONE,
                  0);
+  /**
+   * GdkKeymap::keys-changed:
+   * @keymap: the object on which the signal is emitted
+   *
+   * The ::keys-changed signal is emitted when the mapping represented by
+   * @keymap changes.
+   *
+   * Since: 2.2
+   */
+  signals[KEYS_CHANGED] =
+    g_signal_new ("keys-changed",
+                 G_OBJECT_CLASS_TYPE (object_class),
+                 G_SIGNAL_RUN_LAST,
+                 G_STRUCT_OFFSET (GdkKeymapClass, keys_changed),
+                 NULL, NULL,
+                 g_cclosure_marshal_VOID__VOID,
+                 G_TYPE_NONE,
+                 0);
+
+  /**
+   * GdkKeymap::state-changed:
+   * @keymap: the object on which the signal is emitted
+   *
+   * The ::state-changed signal is emitted when the state of the
+   * keyboard changes, e.g when Caps Lock is turned on or off.
+   * See gdk_keymap_get_caps_lock_state().
+   *
+   * Since: 2.16
+   */
+  signals[STATE_CHANGED] =
+    g_signal_new ("state_changed",
+                  G_OBJECT_CLASS_TYPE (object_class),
+                  G_SIGNAL_RUN_LAST,
+                  G_STRUCT_OFFSET (GdkKeymapClass, state_changed),
+                  NULL, NULL,
+                  g_cclosure_marshal_VOID__VOID,
+                  G_TYPE_NONE, 
+                  0);
+}
+
+static void
+gdk_keymap_init (GdkKeymap *keymap)
+{
 }
 
 /* Other key-handling stuff
@@ -103,12 +121,12 @@ gdk_keymap_class_init (GdkKeymapClass *klass)
 /**
  * gdk_keyval_convert_case:
  * @symbol: a keyval
- * @lower: return location for lowercase version of @symbol
- * @upper: return location for uppercase version of @symbol
+ * @lower: (out): return location for lowercase version of @symbol
+ * @upper: (out): return location for uppercase version of @symbol
  *
  * Obtains the upper- and lower-case versions of the keyval @symbol.
  * Examples of keyvals are #GDK_a, #GDK_Enter, #GDK_F1, etc.
- * 
+ *
  **/
 void
 gdk_keyval_convert_case (guint symbol,
@@ -118,9 +136,18 @@ gdk_keyval_convert_case (guint symbol,
   guint xlower = symbol;
   guint xupper = symbol;
 
+  /* Check for directly encoded 24-bit UCS characters: */
+  if ((symbol & 0xff000000) == 0x01000000)
+    {
+      if (lower)
+       *lower = gdk_unicode_to_keyval (g_unichar_tolower (symbol & 0x00ffffff));
+      if (upper)
+       *upper = gdk_unicode_to_keyval (g_unichar_toupper (symbol & 0x00ffffff));
+      return;
+    }
+
   switch (symbol >> 8)
     {
-#if    defined (GDK_A) && defined (GDK_Ooblique)
     case 0: /* Latin 1 */
       if ((symbol >= GDK_A) && (symbol <= GDK_Z))
        xlower += (GDK_a - GDK_A);
@@ -135,9 +162,7 @@ gdk_keyval_convert_case (guint symbol,
       else if ((symbol >= GDK_oslash) && (symbol <= GDK_thorn))
        xupper -= (GDK_oslash - GDK_Ooblique);
       break;
-#endif /* LATIN1 */
       
-#if    defined (GDK_Aogonek) && defined (GDK_tcedilla)
     case 1: /* Latin 2 */
       /* Assume the KeySym is a legal value (ignore discontinuities) */
       if (symbol == GDK_Aogonek)
@@ -161,9 +186,7 @@ gdk_keyval_convert_case (guint symbol,
       else if (symbol >= GDK_racute && symbol <= GDK_tcedilla)
        xupper -= (GDK_racute - GDK_Racute);
       break;
-#endif /* LATIN2 */
       
-#if    defined (GDK_Hstroke) && defined (GDK_Cabovedot)
     case 2: /* Latin 3 */
       /* Assume the KeySym is a legal value (ignore discontinuities) */
       if (symbol >= GDK_Hstroke && symbol <= GDK_Hcircumflex)
@@ -179,9 +202,7 @@ gdk_keyval_convert_case (guint symbol,
       else if (symbol >= GDK_cabovedot && symbol <= GDK_scircumflex)
        xupper -= (GDK_cabovedot - GDK_Cabovedot);
       break;
-#endif /* LATIN3 */
       
-#if    defined (GDK_Rcedilla) && defined (GDK_Amacron)
     case 3: /* Latin 4 */
       /* Assume the KeySym is a legal value (ignore discontinuities) */
       if (symbol >= GDK_Rcedilla && symbol <= GDK_Tslash)
@@ -197,9 +218,7 @@ gdk_keyval_convert_case (guint symbol,
       else if (symbol >= GDK_amacron && symbol <= GDK_umacron)
        xupper -= (GDK_amacron - GDK_Amacron);
       break;
-#endif /* LATIN4 */
       
-#if    defined (GDK_Serbian_DJE) && defined (GDK_Cyrillic_yu)
     case 6: /* Cyrillic */
       /* Assume the KeySym is a legal value (ignore discontinuities) */
       if (symbol >= GDK_Serbian_DJE && symbol <= GDK_Serbian_DZE)
@@ -211,9 +230,7 @@ gdk_keyval_convert_case (guint symbol,
       else if (symbol >= GDK_Cyrillic_yu && symbol <= GDK_Cyrillic_hardsign)
        xupper += (GDK_Cyrillic_YU - GDK_Cyrillic_yu);
       break;
-#endif /* CYRILLIC */
       
-#if    defined (GDK_Greek_ALPHAaccent) && defined (GDK_Greek_finalsmallsigma)
     case 7: /* Greek */
       /* Assume the KeySym is a legal value (ignore discontinuities) */
       if (symbol >= GDK_Greek_ALPHAaccent && symbol <= GDK_Greek_OMEGAaccent)
@@ -228,7 +245,6 @@ gdk_keyval_convert_case (guint symbol,
               symbol != GDK_Greek_finalsmallsigma)
        xupper -= (GDK_Greek_alpha - GDK_Greek_ALPHA);
       break;
-#endif /* GREEK */
     }
 
   if (lower)
@@ -283,3 +299,18 @@ gdk_keyval_is_lower (guint keyval)
     }
   return FALSE;
 }
+
+/** 
+ * gdk_keymap_get_default:
+ * @returns: the #GdkKeymap attached to the default display.
+ *
+ * Returns the #GdkKeymap attached to the default display.
+ **/
+GdkKeymap*
+gdk_keymap_get_default (void)
+{
+  return gdk_keymap_get_for_display (gdk_display_get_default ());
+}
+
+#define __GDK_KEYS_C__
+#include "gdkaliasdef.c"