EekGtkKeyboard: Use a direct reference to EekboardContext
This commit is contained in:
		@ -54,6 +54,7 @@ enum {
 | 
				
			|||||||
typedef struct _EekGtkKeyboardPrivate
 | 
					typedef struct _EekGtkKeyboardPrivate
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    EekRenderer *renderer;
 | 
					    EekRenderer *renderer;
 | 
				
			||||||
 | 
					    EekboardContextService *eekboard_context; // unowned reference
 | 
				
			||||||
    LevelKeyboard *keyboard; // unowned reference; it's kept in server-context (FIXME)
 | 
					    LevelKeyboard *keyboard; // unowned reference; it's kept in server-context (FIXME)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    GdkEventSequence *sequence; // unowned reference
 | 
					    GdkEventSequence *sequence; // unowned reference
 | 
				
			||||||
@ -122,7 +123,7 @@ static void depress(EekGtkKeyboard *self,
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    EekGtkKeyboardPrivate *priv = eek_gtk_keyboard_get_instance_private (self);
 | 
					    EekGtkKeyboardPrivate *priv = eek_gtk_keyboard_get_instance_private (self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    squeek_layout_depress(priv->keyboard->layout, priv->keyboard->manager->virtual_keyboard,
 | 
					    squeek_layout_depress(priv->keyboard->layout, priv->eekboard_context->virtual_keyboard,
 | 
				
			||||||
                          x, y, eek_renderer_get_transformation(priv->renderer), time, self);
 | 
					                          x, y, eek_renderer_get_transformation(priv->renderer), time, self);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -130,18 +131,18 @@ static void drag(EekGtkKeyboard *self,
 | 
				
			|||||||
                 gdouble x, gdouble y, guint32 time)
 | 
					                 gdouble x, gdouble y, guint32 time)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    EekGtkKeyboardPrivate *priv = eek_gtk_keyboard_get_instance_private (self);
 | 
					    EekGtkKeyboardPrivate *priv = eek_gtk_keyboard_get_instance_private (self);
 | 
				
			||||||
    squeek_layout_drag(priv->keyboard->layout, priv->keyboard->manager->virtual_keyboard,
 | 
					    squeek_layout_drag(priv->keyboard->layout, priv->eekboard_context->virtual_keyboard,
 | 
				
			||||||
                       x, y, eek_renderer_get_transformation(priv->renderer), time,
 | 
					                       x, y, eek_renderer_get_transformation(priv->renderer), time,
 | 
				
			||||||
                       priv->keyboard->manager, self);
 | 
					                       priv->eekboard_context, self);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void release(EekGtkKeyboard *self, guint32 time)
 | 
					static void release(EekGtkKeyboard *self, guint32 time)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    EekGtkKeyboardPrivate *priv = eek_gtk_keyboard_get_instance_private (self);
 | 
					    EekGtkKeyboardPrivate *priv = eek_gtk_keyboard_get_instance_private (self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    squeek_layout_release(priv->keyboard->layout, priv->keyboard->manager->virtual_keyboard,
 | 
					    squeek_layout_release(priv->keyboard->layout, priv->eekboard_context->virtual_keyboard,
 | 
				
			||||||
                          eek_renderer_get_transformation(priv->renderer), time,
 | 
					                          eek_renderer_get_transformation(priv->renderer), time,
 | 
				
			||||||
                          priv->keyboard->manager, self);
 | 
					                          priv->eekboard_context, self);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static gboolean
 | 
					static gboolean
 | 
				
			||||||
@ -229,7 +230,7 @@ eek_gtk_keyboard_real_unmap (GtkWidget *self)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if (priv->keyboard) {
 | 
					    if (priv->keyboard) {
 | 
				
			||||||
        squeek_layout_release_all_only(
 | 
					        squeek_layout_release_all_only(
 | 
				
			||||||
            priv->keyboard->layout, priv->keyboard->manager->virtual_keyboard,
 | 
					            priv->keyboard->layout, priv->eekboard_context->virtual_keyboard,
 | 
				
			||||||
            gdk_event_get_time(NULL));
 | 
					            gdk_event_get_time(NULL));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -264,7 +265,7 @@ eek_gtk_keyboard_dispose (GObject *object)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if (priv->keyboard) {
 | 
					    if (priv->keyboard) {
 | 
				
			||||||
        squeek_layout_release_all_only(
 | 
					        squeek_layout_release_all_only(
 | 
				
			||||||
            priv->keyboard->layout, priv->keyboard->manager->virtual_keyboard,
 | 
					            priv->keyboard->layout, priv->eekboard_context->virtual_keyboard,
 | 
				
			||||||
            gdk_event_get_time(NULL));
 | 
					            gdk_event_get_time(NULL));
 | 
				
			||||||
        priv->keyboard = NULL;
 | 
					        priv->keyboard = NULL;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -311,11 +312,12 @@ eek_gtk_keyboard_init (EekGtkKeyboard *self)
 | 
				
			|||||||
 * Returns: a #GtkWidget
 | 
					 * Returns: a #GtkWidget
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
GtkWidget *
 | 
					GtkWidget *
 | 
				
			||||||
eek_gtk_keyboard_new (LevelKeyboard *keyboard)
 | 
					eek_gtk_keyboard_new (LevelKeyboard *keyboard, EekboardContextService *eekservice)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    EekGtkKeyboard *ret = EEK_GTK_KEYBOARD(g_object_new (EEK_TYPE_GTK_KEYBOARD, NULL));
 | 
					    EekGtkKeyboard *ret = EEK_GTK_KEYBOARD(g_object_new (EEK_TYPE_GTK_KEYBOARD, NULL));
 | 
				
			||||||
    EekGtkKeyboardPrivate *priv = (EekGtkKeyboardPrivate*)eek_gtk_keyboard_get_instance_private (ret);
 | 
					    EekGtkKeyboardPrivate *priv = (EekGtkKeyboardPrivate*)eek_gtk_keyboard_get_instance_private (ret);
 | 
				
			||||||
    priv->keyboard = keyboard;
 | 
					    priv->keyboard = keyboard;
 | 
				
			||||||
 | 
					    priv->eekboard_context = eekservice;
 | 
				
			||||||
    return GTK_WIDGET(ret);
 | 
					    return GTK_WIDGET(ret);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -28,6 +28,8 @@
 | 
				
			|||||||
#include <glib.h>
 | 
					#include <glib.h>
 | 
				
			||||||
#include <gtk/gtk.h>
 | 
					#include <gtk/gtk.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "eek/eek-types.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct _LevelKeyboard LevelKeyboard; // including causes weird bugs
 | 
					typedef struct _LevelKeyboard LevelKeyboard; // including causes weird bugs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
G_BEGIN_DECLS
 | 
					G_BEGIN_DECLS
 | 
				
			||||||
@ -45,7 +47,7 @@ struct _EekGtkKeyboardClass
 | 
				
			|||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GType      eek_gtk_keyboard_get_type  (void) G_GNUC_CONST;
 | 
					GType      eek_gtk_keyboard_get_type  (void) G_GNUC_CONST;
 | 
				
			||||||
GtkWidget *eek_gtk_keyboard_new       (LevelKeyboard *keyboard);
 | 
					GtkWidget *eek_gtk_keyboard_new       (LevelKeyboard *keyboard, EekboardContextService *eekservice);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
G_END_DECLS
 | 
					G_END_DECLS
 | 
				
			||||||
#endif  /* EEK_GTK_KEYBOARD_H */
 | 
					#endif  /* EEK_GTK_KEYBOARD_H */
 | 
				
			||||||
 | 
				
			|||||||
@ -52,6 +52,5 @@ void level_keyboard_init(LevelKeyboard *self, struct squeek_layout *layout) {
 | 
				
			|||||||
LevelKeyboard *level_keyboard_new(EekboardContextService *manager, struct squeek_layout *layout) {
 | 
					LevelKeyboard *level_keyboard_new(EekboardContextService *manager, struct squeek_layout *layout) {
 | 
				
			||||||
    LevelKeyboard *keyboard = g_new0(LevelKeyboard, 1);
 | 
					    LevelKeyboard *keyboard = g_new0(LevelKeyboard, 1);
 | 
				
			||||||
    level_keyboard_init(keyboard, layout);
 | 
					    level_keyboard_init(keyboard, layout);
 | 
				
			||||||
    keyboard->manager = manager;
 | 
					 | 
				
			||||||
    return keyboard;
 | 
					    return keyboard;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -41,8 +41,6 @@ struct _LevelKeyboard {
 | 
				
			|||||||
    size_t keymap_len; // length of the data inside keymap_fd
 | 
					    size_t keymap_len; // length of the data inside keymap_fd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    guint id; // as a key to layout choices
 | 
					    guint id; // as a key to layout choices
 | 
				
			||||||
 | 
					 | 
				
			||||||
    EekboardContextService *manager; // unowned reference
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
typedef struct _LevelKeyboard LevelKeyboard;
 | 
					typedef struct _LevelKeyboard LevelKeyboard;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -224,7 +224,7 @@ make_widget (ServerContextService *context)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    LevelKeyboard *keyboard = eekboard_context_service_get_keyboard (context->state);
 | 
					    LevelKeyboard *keyboard = eekboard_context_service_get_keyboard (context->state);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    context->widget = eek_gtk_keyboard_new (keyboard);
 | 
					    context->widget = eek_gtk_keyboard_new (keyboard, context->state);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    gtk_widget_set_has_tooltip (context->widget, TRUE);
 | 
					    gtk_widget_set_has_tooltip (context->widget, TRUE);
 | 
				
			||||||
    gtk_container_add (GTK_CONTAINER(context->window), context->widget);
 | 
					    gtk_container_add (GTK_CONTAINER(context->window), context->widget);
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user