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