ServerContextService: Don't destroy widget all the time
This avoids icon theme lookups and lots of other stuff down the road. Closes: #60
This commit is contained in:
@ -55,7 +55,6 @@ struct _ServerContextServiceClass {
|
|||||||
|
|
||||||
G_DEFINE_TYPE (ServerContextService, server_context_service, EEKBOARD_TYPE_CONTEXT_SERVICE);
|
G_DEFINE_TYPE (ServerContextService, server_context_service, EEKBOARD_TYPE_CONTEXT_SERVICE);
|
||||||
|
|
||||||
static void update_widget (ServerContextService *context);
|
|
||||||
static void set_geometry (ServerContextService *context);
|
static void set_geometry (ServerContextService *context);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -223,16 +222,12 @@ destroy_window (ServerContextService *context)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
update_widget (ServerContextService *context)
|
make_widget (ServerContextService *context)
|
||||||
{
|
{
|
||||||
EekKeyboard *keyboard;
|
EekKeyboard *keyboard;
|
||||||
EekTheme *theme;
|
EekTheme *theme;
|
||||||
|
|
||||||
if (context->widget) {
|
g_return_if_fail (!context->widget);
|
||||||
gtk_widget_destroy (context->widget);
|
|
||||||
context->widget = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
theme = eek_theme_new ("resource:///sm/puri/squeekboard/style.css",
|
theme = eek_theme_new ("resource:///sm/puri/squeekboard/style.css",
|
||||||
NULL,
|
NULL,
|
||||||
NULL);
|
NULL);
|
||||||
@ -257,7 +252,8 @@ server_context_service_real_show_keyboard (EekboardContextService *_context)
|
|||||||
|
|
||||||
if (!context->window)
|
if (!context->window)
|
||||||
make_window (context);
|
make_window (context);
|
||||||
update_widget (context);
|
if (!context->widget)
|
||||||
|
make_widget (context);
|
||||||
|
|
||||||
EEKBOARD_CONTEXT_SERVICE_CLASS (server_context_service_parent_class)->
|
EEKBOARD_CONTEXT_SERVICE_CLASS (server_context_service_parent_class)->
|
||||||
show_keyboard (_context);
|
show_keyboard (_context);
|
||||||
@ -270,7 +266,6 @@ server_context_service_real_hide_keyboard (EekboardContextService *_context)
|
|||||||
ServerContextService *context = SERVER_CONTEXT_SERVICE(_context);
|
ServerContextService *context = SERVER_CONTEXT_SERVICE(_context);
|
||||||
|
|
||||||
gtk_widget_hide (context->window);
|
gtk_widget_hide (context->window);
|
||||||
g_clear_pointer (&context->widget, gtk_widget_destroy);
|
|
||||||
|
|
||||||
EEKBOARD_CONTEXT_SERVICE_CLASS (server_context_service_parent_class)->
|
EEKBOARD_CONTEXT_SERVICE_CLASS (server_context_service_parent_class)->
|
||||||
hide_keyboard (_context);
|
hide_keyboard (_context);
|
||||||
|
|||||||
Reference in New Issue
Block a user