gcal-window: the calendar window remember its geometry.
This commit is contained in:
committed by
Erick Pérez Castellanos
parent
258283a01d
commit
50f8f2de37
@@ -74,14 +74,6 @@ static void gcal_application_changed_view (GSettings *
|
||||
gchar *key,
|
||||
gpointer user_data);
|
||||
|
||||
static gboolean gcal_application_window_state_changed (GtkWidget *widget,
|
||||
GdkEvent *event,
|
||||
gpointer user_data);
|
||||
|
||||
static gboolean gcal_application_window_configured (GtkWidget *widget,
|
||||
GdkEvent *event,
|
||||
gpointer user_data);
|
||||
|
||||
G_DEFINE_TYPE_WITH_PRIVATE (GcalApplication, gcal_application, GTK_TYPE_APPLICATION);
|
||||
|
||||
static gboolean show_version = FALSE;
|
||||
@@ -141,12 +133,6 @@ gcal_application_activate (GApplication *application)
|
||||
}
|
||||
else
|
||||
{
|
||||
GVariant *variant;
|
||||
gboolean maximized;
|
||||
const gint32 *position;
|
||||
const gint32 *size;
|
||||
gsize n_elements;
|
||||
|
||||
priv->window =
|
||||
gcal_window_new_with_view (GCAL_APPLICATION (application),
|
||||
g_settings_get_enum (priv->settings,
|
||||
@@ -163,33 +149,7 @@ gcal_application_activate (GApplication *application)
|
||||
"enabled",
|
||||
G_BINDING_DEFAULT | G_BINDING_INVERT_BOOLEAN);
|
||||
|
||||
variant = g_settings_get_value (priv->settings, "window-size");
|
||||
size = g_variant_get_fixed_array (variant, &n_elements, sizeof (gint32));
|
||||
if (n_elements == 2)
|
||||
gtk_window_set_default_size (GTK_WINDOW (priv->window), size[0], size[1]);
|
||||
g_variant_unref (variant);
|
||||
|
||||
variant = g_settings_get_value (priv->settings, "window-position");
|
||||
position = g_variant_get_fixed_array (variant, &n_elements, sizeof (gint32));
|
||||
if (n_elements == 2)
|
||||
gtk_window_move (GTK_WINDOW (priv->window), position[0], position[1]);
|
||||
g_variant_unref (variant);
|
||||
|
||||
maximized = g_settings_get_boolean (priv->settings, "window-maximized");
|
||||
if (maximized)
|
||||
gtk_window_maximize (GTK_WINDOW (priv->window));
|
||||
|
||||
gtk_widget_show_all (priv->window);
|
||||
|
||||
g_signal_connect (priv->window,
|
||||
"window-state-event",
|
||||
G_CALLBACK (gcal_application_window_state_changed),
|
||||
application);
|
||||
|
||||
g_signal_connect (priv->window,
|
||||
"configure-event",
|
||||
G_CALLBACK (gcal_application_window_configured),
|
||||
application);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -437,59 +397,6 @@ gcal_application_changed_view (GSettings *settings,
|
||||
"active-view"));
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gcal_application_window_state_changed (GtkWidget *widget,
|
||||
GdkEvent *event,
|
||||
gpointer user_data)
|
||||
{
|
||||
GcalApplicationPrivate *priv;
|
||||
GdkWindowState state;
|
||||
gboolean maximized;
|
||||
|
||||
priv = gcal_application_get_instance_private (GCAL_APPLICATION (user_data));
|
||||
state = gdk_window_get_state (gtk_widget_get_window (widget));
|
||||
maximized = state & GDK_WINDOW_STATE_MAXIMIZED;
|
||||
|
||||
g_settings_set_boolean (priv->settings, "window-maximized", maximized);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gcal_application_window_configured (GtkWidget *widget,
|
||||
GdkEvent *event,
|
||||
gpointer user_data)
|
||||
{
|
||||
GcalApplicationPrivate *priv;
|
||||
GVariant *variant;
|
||||
GdkWindowState state;
|
||||
gint32 size[2];
|
||||
gint32 position[2];
|
||||
|
||||
priv = gcal_application_get_instance_private (GCAL_APPLICATION (user_data));
|
||||
state = gdk_window_get_state (gtk_widget_get_window (widget));
|
||||
if (state & GDK_WINDOW_STATE_MAXIMIZED)
|
||||
return FALSE;
|
||||
|
||||
gtk_window_get_size (GTK_WINDOW (priv->window),
|
||||
(gint *) &size[0],
|
||||
(gint *) &size[1]);
|
||||
variant = g_variant_new_fixed_array (G_VARIANT_TYPE_INT32,
|
||||
size, 2,
|
||||
sizeof (size[0]));
|
||||
g_settings_set_value (priv->settings, "window-size", variant);
|
||||
|
||||
gtk_window_get_position (GTK_WINDOW (priv->window),
|
||||
(gint *) &position[0],
|
||||
(gint *) &position[1]);
|
||||
variant = g_variant_new_fixed_array (G_VARIANT_TYPE_INT32,
|
||||
position, 2,
|
||||
sizeof (position[0]));
|
||||
g_settings_set_value (priv->settings, "window-position", variant);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Public API */
|
||||
GcalApplication*
|
||||
gcal_application_new (void)
|
||||
|
||||
Reference in New Issue
Block a user