Sophie

Sophie

distrib > Fedora > 13 > i386 > media > updates-src > by-pkgid > a45b0e70c098926c4a9e84383852557e > files > 2

input-pad-1.0.1-2.fc13.src.rpm

--- input-pad-1.0.1/configure.ac
+++ input-pad-1.0.1/configure.ac
@@ -142,7 +142,7 @@ AC_MSG_RESULT($enable_eek)
 if test x"$enable_eek" = xyes; then
     dnl - check eek is available
     PKG_CHECK_MODULES(EEK, [
-        eek-gtk-0.90 eek-xkl-0.90
+        eek-gtk-0.1 eek-xkl-0.1
 	],, AC_MSG_ERROR([libeek not found]))
     AM_CONDITIONAL(HAVE_EEK, true)
 else
--- input-pad-1.0.1/input-pad/eek-gtk.c
+++ input-pad-1.0.1/input-pad/eek-gtk.c
@@ -40,6 +40,7 @@
 
 struct _InputPadGtkKbduiEekPrivate {
     EekKeyboard                *eek_keyboard;
+    EekLayout                  *eek_layout;
 };
 
 static void             create_keyboard_layout_ui_real_eek
@@ -67,12 +68,16 @@ on_window_keyboard_changed_eek (InputPad
                                 gint               group,
                                 gpointer           data)
 {
+    gint prev_group, prev_level;
     InputPadGtkKbduiEek *kbdui;
 
     g_return_if_fail (INPUT_PAD_IS_GTK_KBDUI_EEK (data));
 
     kbdui = INPUT_PAD_GTK_KBDUI_EEK (data);
-    eek_keyboard_set_group (kbdui->priv->eek_keyboard, group);
+    eek_keyboard_get_keysym_index (kbdui->priv->eek_keyboard,
+                                   &prev_group, &prev_level);
+    eek_keyboard_set_keysym_index (kbdui->priv->eek_keyboard,
+                                   group, prev_level);
 }
 
 static void
@@ -83,11 +88,11 @@ on_eek_keyboard_key_pressed (EekKeyboard
     InputPadGtkWindow *window;
     char *str, *empty = "";
     guint keycode;
-    EekSymbol *symbol;
-    EekSymbol *symbol0;
-    guint keysym = EEK_INVALID_KEYSYM;
-    guint keysym0 = EEK_INVALID_KEYSYM;
-    gint group;
+    guint keysym;
+    guint *keysyms;
+    guint keysym0;
+    gint num_groups, num_levels;
+    gint group, level;
     guint state = 0;
     gboolean retval = FALSE;
 
@@ -96,22 +101,14 @@ on_eek_keyboard_key_pressed (EekKeyboard
 
     window = INPUT_PAD_GTK_WINDOW (user_data);
     keycode = eek_key_get_keycode (key);
-    symbol = eek_key_get_symbol_with_fallback (key, 0, 0);
-    if (EEK_IS_KEYSYM(symbol))
-        keysym = eek_keysym_get_xkeysym (EEK_KEYSYM(symbol));
-    str = eek_symbol_get_label (symbol);
+    keysym = eek_key_get_keysym (key);
+    str = eek_keysym_to_string (keysym);
     if (str == NULL)
         str = empty;
-    group = eek_keyboard_get_group (keyboard);
-    symbol0 = eek_key_get_symbol_at_index (key, group, 0, 0, 0);
-    if (EEK_IS_KEYSYM(symbol0))
-        keysym0 = eek_keysym_get_xkeysym (EEK_KEYSYM(symbol0));
-
-    if (keysym0 == EEK_INVALID_KEYSYM) {
-        keysym0 = keysym;
-    }
+    eek_key_get_keysyms (key, &keysyms, &num_groups, &num_levels);
+    eek_key_get_keysym_index (key, &group, &level);
     state = input_pad_gtk_window_get_keyboard_state (window);
-    if (keysym != EEK_INVALID_KEYSYM && keysym != keysym0) {
+    if (keysyms && (keysym != keysyms[group * num_levels])) {
         state |= ShiftMask;
     }
     state = input_pad_xkb_build_core_state (state, group);
@@ -122,13 +119,19 @@ on_eek_keyboard_key_pressed (EekKeyboard
     if (str != empty)
         g_free (str);
 
+    if (keysyms) {
+        keysym0 = keysyms[0];
+    } else {
+        keysym0 = keysym;
+    }
     if (keysym0 == XK_Num_Lock) {
         keysym0 = XK_Shift_L;
     }
     input_pad_gtk_window_set_keyboard_state_with_keysym (window, keysym0);
     if (keysym0 == XK_Shift_L || keysym0 == XK_Shift_R) {
         state = input_pad_gtk_window_get_keyboard_state (window);
-        eek_keyboard_set_level (keyboard, state & ShiftMask ? 1 : 0);
+        eek_keyboard_set_keysym_index (keyboard, group,
+                                       state & ShiftMask ? 1 : 0);
     }
 }
 
@@ -140,24 +143,27 @@ create_keyboard_layout_ui_real_eek (Inpu
     InputPadGtkKbduiEek *kbdui_eek;
     EekKeyboard *keyboard;
     EekLayout *layout;
+    EekBounds bounds;
     GtkWidget *widget;
-    gdouble width, height;
 
     g_return_if_fail (INPUT_PAD_IS_GTK_KBDUI_EEK (kbdui));
 
     kbdui_eek = INPUT_PAD_GTK_KBDUI_EEK (kbdui);
-    layout = eek_xkl_layout_new ();
-
-    keyboard = kbdui_eek->priv->eek_keyboard = eek_keyboard_new (layout, 640, 480);
-    g_object_unref (layout);
-    eek_keyboard_set_modifier_behavior (keyboard, EEK_MODIFIER_BEHAVIOR_LATCH);
-    widget = eek_gtk_keyboard_new (keyboard);
-    eek_keyboard_get_size (keyboard, &width, &height);
+    keyboard = kbdui_eek->priv->eek_keyboard = eek_gtk_keyboard_new ();
+    g_object_ref_sink (keyboard);
+    layout = kbdui_eek->priv->eek_layout = eek_xkl_layout_new ();
+    g_object_ref_sink (layout);
+    eek_keyboard_set_layout (keyboard, layout);
+    bounds.width = 640;
+    bounds.height = 480;
+    eek_element_set_bounds (EEK_ELEMENT(keyboard), &bounds);
+    widget = eek_gtk_keyboard_get_widget (EEK_GTK_KEYBOARD(keyboard));
+    eek_element_get_bounds (EEK_ELEMENT(keyboard), &bounds);
 
     gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0);
     gtk_box_reorder_child (GTK_BOX (vbox), widget, 0);
     gtk_widget_show (widget);
-    gtk_widget_set_size_request (widget, width, height);
+    gtk_widget_set_size_request (widget, bounds.width, bounds.height);
 
     g_signal_connect (G_OBJECT (window), "keyboard-changed",
                       G_CALLBACK (on_window_keyboard_changed_eek),
@@ -185,6 +191,7 @@ destroy_prev_keyboard_layout_eek (InputP
     gtk_widget_destroy (widget);
 
     g_object_unref (kbdui_eek->priv->eek_keyboard);
+    g_object_unref (kbdui_eek->priv->eek_layout);
 }
 
 static void