Follow monitors-changed event.

This commit is contained in:
Daiki Ueno
2011-06-14 12:39:46 +09:00
parent d9073183a7
commit da7d11e387

View File

@ -278,6 +278,13 @@ set_geometry (ServerContext *context)
gdk_screen_get_monitor_geometry (screen, monitor, &rect); gdk_screen_get_monitor_geometry (screen, monitor, &rect);
eek_element_get_bounds (EEK_ELEMENT(context->keyboard), &bounds); eek_element_get_bounds (EEK_ELEMENT(context->keyboard), &bounds);
g_signal_handlers_disconnect_by_func (context->window,
on_realize_set_dock,
context);
g_signal_handlers_disconnect_by_func (context->window,
on_realize_set_non_maximizable,
context);
if (context->fullscreen) { if (context->fullscreen) {
gint width = rect.width, height = rect.height / 2; gint width = rect.width, height = rect.height / 2;
@ -380,10 +387,9 @@ update_widget (ServerContext *context)
_("Keyboard")); _("Keyboard"));
gtk_window_set_icon_name (GTK_WINDOW(context->window), "eekboard"); gtk_window_set_icon_name (GTK_WINDOW(context->window), "eekboard");
gtk_window_set_keep_above (GTK_WINDOW(context->window), TRUE); gtk_window_set_keep_above (GTK_WINDOW(context->window), TRUE);
set_geometry (context);
} }
gtk_container_add (GTK_CONTAINER(context->window), context->widget); gtk_container_add (GTK_CONTAINER(context->window), context->widget);
set_geometry (context);
} }
static void static void
@ -540,9 +546,19 @@ server_context_class_init (ServerContextClass *klass)
pspec); pspec);
} }
static void
on_monitors_changed (GdkScreen *screen,
gpointer user_data)
{
ServerContext *context = user_data;
if (context->window)
set_geometry (context);
}
static void static void
server_context_init (ServerContext *context) server_context_init (ServerContext *context)
{ {
GdkScreen *screen;
GError *error; GError *error;
context->connection = NULL; context->connection = NULL;
@ -574,6 +590,12 @@ server_context_init (ServerContext *context)
g_settings_bind (context->settings, "ui-toolkit", g_settings_bind (context->settings, "ui-toolkit",
context, "ui-toolkit", context, "ui-toolkit",
G_SETTINGS_BIND_GET); G_SETTINGS_BIND_GET);
screen = gdk_screen_get_default ();
g_signal_connect (screen,
"monitors-changed",
G_CALLBACK(on_monitors_changed),
context);
} }
static void static void