libeek: add new signal "keysym-index-changed" to EekKeyboard
This commit is contained in:
		@ -34,6 +34,7 @@
 | 
				
			|||||||
#include "eek-keyboard.h"
 | 
					#include "eek-keyboard.h"
 | 
				
			||||||
#include "eek-section.h"
 | 
					#include "eek-section.h"
 | 
				
			||||||
#include "eek-key.h"
 | 
					#include "eek-key.h"
 | 
				
			||||||
 | 
					#include "eek-marshallers.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum {
 | 
					enum {
 | 
				
			||||||
    PROP_0,
 | 
					    PROP_0,
 | 
				
			||||||
@ -45,6 +46,7 @@ enum {
 | 
				
			|||||||
enum {
 | 
					enum {
 | 
				
			||||||
    KEY_PRESSED,
 | 
					    KEY_PRESSED,
 | 
				
			||||||
    KEY_RELEASED,
 | 
					    KEY_RELEASED,
 | 
				
			||||||
 | 
					    KEYSYM_INDEX_CHANGED,
 | 
				
			||||||
    LAST_SIGNAL
 | 
					    LAST_SIGNAL
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -98,12 +100,16 @@ eek_keyboard_real_set_keysym_index (EekKeyboard *self,
 | 
				
			|||||||
    EekKeyboardPrivate *priv = EEK_KEYBOARD_GET_PRIVATE(self);
 | 
					    EekKeyboardPrivate *priv = EEK_KEYBOARD_GET_PRIVATE(self);
 | 
				
			||||||
    struct keysym_index ki;
 | 
					    struct keysym_index ki;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ki.group = priv->group = group;
 | 
					    if (priv->group != group || priv->level != level) {
 | 
				
			||||||
    ki.level = priv->level = level;
 | 
					        ki.group = priv->group = group;
 | 
				
			||||||
 | 
					        ki.level = priv->level = level;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    eek_container_foreach_child (EEK_CONTAINER(self),
 | 
					        eek_container_foreach_child (EEK_CONTAINER(self),
 | 
				
			||||||
                                 set_keysym_index_for_section,
 | 
					                                     set_keysym_index_for_section,
 | 
				
			||||||
                                 &ki);
 | 
					                                     &ki);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        g_signal_emit_by_name (self, "keysym-index-changed", group, level);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
@ -175,7 +181,7 @@ eek_keyboard_real_set_layout (EekKeyboard *self,
 | 
				
			|||||||
    g_return_if_fail (EEK_IS_LAYOUT(layout));
 | 
					    g_return_if_fail (EEK_IS_LAYOUT(layout));
 | 
				
			||||||
    priv->layout = layout;
 | 
					    priv->layout = layout;
 | 
				
			||||||
    g_object_ref_sink (priv->layout);
 | 
					    g_object_ref_sink (priv->layout);
 | 
				
			||||||
    g_signal_connect (priv->layout, "group_changed",
 | 
					    g_signal_connect (priv->layout, "group-changed",
 | 
				
			||||||
                      G_CALLBACK(on_group_changed), self);
 | 
					                      G_CALLBACK(on_group_changed), self);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -379,6 +385,28 @@ eek_keyboard_class_init (EekKeyboardClass *klass)
 | 
				
			|||||||
                      G_TYPE_NONE,
 | 
					                      G_TYPE_NONE,
 | 
				
			||||||
                      1,
 | 
					                      1,
 | 
				
			||||||
                      EEK_TYPE_KEY);
 | 
					                      EEK_TYPE_KEY);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * EekKeyboard::keysym-index-changed:
 | 
				
			||||||
 | 
					     * @keyboard: an #EekKeyboard
 | 
				
			||||||
 | 
					     * @group: row index of the symbol matrix of keys on @keyboard
 | 
				
			||||||
 | 
					     * @level: column index of the symbol matrix of keys on @keyboard
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * The ::keysym-index-changed signal is emitted each time the
 | 
				
			||||||
 | 
					     * global configuration of group/level index changes.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    signals[KEYSYM_INDEX_CHANGED] =
 | 
				
			||||||
 | 
					        g_signal_new ("keysym-index-changed",
 | 
				
			||||||
 | 
					                      G_TYPE_FROM_CLASS(gobject_class),
 | 
				
			||||||
 | 
					                      G_SIGNAL_RUN_FIRST,
 | 
				
			||||||
 | 
					                      0,
 | 
				
			||||||
 | 
					                      NULL,
 | 
				
			||||||
 | 
					                      NULL,
 | 
				
			||||||
 | 
					                      _eek_marshal_VOID__INT_INT,
 | 
				
			||||||
 | 
					                      G_TYPE_NONE,
 | 
				
			||||||
 | 
					                      2,
 | 
				
			||||||
 | 
					                      G_TYPE_INT,
 | 
				
			||||||
 | 
					                      G_TYPE_INT);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user