870a2b769b
Saving maximized state is too complicated, so let's just store width and height of the window when it is not maximized. Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
67 lines
1.6 KiB
C
67 lines
1.6 KiB
C
/*
|
|
* Copyright 2014 (c) Anna Schumaker.
|
|
*/
|
|
#include <core/version.h>
|
|
#include <gui/builder.h>
|
|
#include <gui/settings.h>
|
|
|
|
static const gchar *SETTINGS_WIDTH = "gui.window.width";
|
|
static const gchar *SETTINGS_HEIGHT = "gui.window.height";
|
|
|
|
static int saved_width = 0;
|
|
static int saved_height = 0;
|
|
|
|
|
|
gboolean __window_configure(GtkWindow *window, GdkEventConfigure *event,
|
|
gpointer data)
|
|
{
|
|
int width = gui_settings_get(SETTINGS_WIDTH);
|
|
int height = gui_settings_get(SETTINGS_HEIGHT);
|
|
|
|
if (event->width != width) {
|
|
saved_width = width;
|
|
gui_settings_set(SETTINGS_WIDTH, event->width);
|
|
}
|
|
|
|
if (event->height != height) {
|
|
saved_height = height;
|
|
gui_settings_set(SETTINGS_HEIGHT, event->height);
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
gboolean __window_state(GtkWindow *window, GdkEventWindowState *event,
|
|
gpointer data)
|
|
{
|
|
if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED &&
|
|
event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED) {
|
|
gui_settings_set(SETTINGS_WIDTH, saved_width);
|
|
gui_settings_set(SETTINGS_HEIGHT, saved_height);
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
void gui_window_init(const gchar *icon)
|
|
{
|
|
GtkWindow *window = GTK_WINDOW(gui_builder_widget("o_window"));
|
|
gchar *title = g_strdup_printf("Ocarina %s", get_version());
|
|
|
|
gtk_window_set_title(window, title);
|
|
gtk_window_set_icon_from_file(window, icon, NULL);
|
|
|
|
saved_width = gui_settings_get(SETTINGS_WIDTH);
|
|
saved_height = gui_settings_get(SETTINGS_HEIGHT);
|
|
if (saved_width > 0 && saved_height > 0)
|
|
gtk_window_resize(window, saved_width, saved_height);
|
|
|
|
g_free(title);
|
|
}
|
|
|
|
void gui_window_deinit()
|
|
{
|
|
gtk_widget_destroy(gui_builder_widget("o_window"));
|
|
}
|