summaryrefslogtreecommitdiff
path: root/src/text-backend.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/text-backend.c')
-rw-r--r--src/text-backend.c41
1 files changed, 30 insertions, 11 deletions
diff --git a/src/text-backend.c b/src/text-backend.c
index 59a8b946..d6a6f3b3 100644
--- a/src/text-backend.c
+++ b/src/text-backend.c
@@ -121,6 +121,7 @@ deactivate_text_input(struct text_input *text_input,
input_method_context_end_keyboard_grab(input_method->context);
wl_input_method_send_deactivate(input_method->input_method_binding,
input_method->context->resource);
+ input_method->context->model = NULL;
}
wl_list_remove(&input_method->link);
@@ -437,7 +438,9 @@ input_method_context_commit_string(struct wl_client *client,
struct input_method_context *context =
wl_resource_get_user_data(resource);
- wl_text_input_send_commit_string(context->model->resource, serial, text);
+ if (context->model)
+ wl_text_input_send_commit_string(context->model->resource,
+ serial, text);
}
static void
@@ -450,7 +453,9 @@ input_method_context_preedit_string(struct wl_client *client,
struct input_method_context *context =
wl_resource_get_user_data(resource);
- wl_text_input_send_preedit_string(context->model->resource, serial, text, commit);
+ if (context->model)
+ wl_text_input_send_preedit_string(context->model->resource,
+ serial, text, commit);
}
static void
@@ -463,7 +468,9 @@ input_method_context_preedit_styling(struct wl_client *client,
struct input_method_context *context =
wl_resource_get_user_data(resource);
- wl_text_input_send_preedit_styling(context->model->resource, index, length, style);
+ if (context->model)
+ wl_text_input_send_preedit_styling(context->model->resource,
+ index, length, style);
}
static void
@@ -474,7 +481,9 @@ input_method_context_preedit_cursor(struct wl_client *client,
struct input_method_context *context =
wl_resource_get_user_data(resource);
- wl_text_input_send_preedit_cursor(context->model->resource, cursor);
+ if (context->model)
+ wl_text_input_send_preedit_cursor(context->model->resource,
+ cursor);
}
static void
@@ -486,7 +495,9 @@ input_method_context_delete_surrounding_text(struct wl_client *client,
struct input_method_context *context =
wl_resource_get_user_data(resource);
- wl_text_input_send_delete_surrounding_text(context->model->resource, index, length);
+ if (context->model)
+ wl_text_input_send_delete_surrounding_text(context->model->resource,
+ index, length);
}
static void
@@ -498,7 +509,9 @@ input_method_context_cursor_position(struct wl_client *client,
struct input_method_context *context =
wl_resource_get_user_data(resource);
- wl_text_input_send_cursor_position(context->model->resource, index, anchor);
+ if (context->model)
+ wl_text_input_send_cursor_position(context->model->resource,
+ index, anchor);
}
static void
@@ -509,7 +522,8 @@ input_method_context_modifiers_map(struct wl_client *client,
struct input_method_context *context =
wl_resource_get_user_data(resource);
- wl_text_input_send_modifiers_map(context->model->resource, map);
+ if (context->model)
+ wl_text_input_send_modifiers_map(context->model->resource, map);
}
static void
@@ -524,8 +538,9 @@ input_method_context_keysym(struct wl_client *client,
struct input_method_context *context =
wl_resource_get_user_data(resource);
- wl_text_input_send_keysym(context->model->resource, serial, time,
- sym, state, modifiers);
+ if (context->model)
+ wl_text_input_send_keysym(context->model->resource,
+ serial, time, sym, state, modifiers);
}
static void
@@ -653,7 +668,9 @@ input_method_context_language(struct wl_client *client,
{
struct input_method_context *context = wl_resource_get_user_data(resource);
- wl_text_input_send_language(context->model->resource, serial, language);
+ if (context->model)
+ wl_text_input_send_language(context->model->resource,
+ serial, language);
}
static void
@@ -664,7 +681,9 @@ input_method_context_text_direction(struct wl_client *client,
{
struct input_method_context *context = wl_resource_get_user_data(resource);
- wl_text_input_send_text_direction(context->model->resource, serial, direction);
+ if (context->model)
+ wl_text_input_send_text_direction(context->model->resource,
+ serial, direction);
}