ocarina: Store maximization and size of window

Re-enable and clean up the code I used to have.

Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
This commit is contained in:
Bryan Schumaker 2012-08-31 10:15:28 -04:00
parent fc46bea1d1
commit c026686a1b
1 changed files with 31 additions and 40 deletions

View File

@ -11,61 +11,46 @@
#include <sstream>
using namespace std;
//static GtkWidget *win;
//static int old_w, old_h;
//static bool ignore_configure_event = false;
static int old_w, old_h;
static bool ignore_configure_event = false;
/*static void resize(int w, int h)
static gboolean configure(GtkWidget *widget, GdkEvent *event, gpointer data)
{
gtk_window_resize(GTK_WINDOW(win), w, h);
}*/
/*static gboolean configure(GtkWidget *widget, GdkEvent *event, gpointer data)
{
int w, h;
int old_w = libsaria::prefs::get("ocarina.window.w");
int old_h = libsaria::prefs::get("ocarina.window.h");
int w = event->configure.width;
int h = event->configure.height;
int cur_w = libsaria::prefs::get("ocarina.window.w");
int cur_h = libsaria::prefs::get("ocarina.window.h");
if (ignore_configure_event == true) {
ignore_configure_event = false;
return FALSE;
}
gtk_window_get_size(GTK_WINDOW(win), &w, &h);
if ( (w == old_w) && (h == old_h) )
return FALSE;
if (w != old_w)
if (w != cur_w)
libsaria::prefs::set("ocarina.window.w", w);
if (h != old_h)
libsaria::prefs::set("ocarina.window.h", h);
println("New (w,h): (%d, %d)", w, h);
gtk_window_resize(GTK_WINDOW(win), w, h);
if (h != cur_h)
libsaria::prefs::set("ocarina.window.h", w);
return FALSE;
}*/
}
/*static void window_state(GtkWidget *widget, GdkEvent *event, gpointer data)
static void window_state(GtkWidget *widget, GdkEvent *event, gpointer data)
{
bool maxed = false;
bool maximized = libsaria::prefs::get("ocarina.window.maximized");
GdkWindowState state = gdk_window_get_state(GTK_WIDGET(win)->window);
if (state & GDK_WINDOW_STATE_MAXIMIZED)
maxed = true;
if (maxed == maximized)
if (!(event->window_state.changed_mask & GDK_WINDOW_STATE_MAXIMIZED))
return;
println("Maximization changed to: %d", maxed);
libsaria::prefs::set("ocarina.window.maximized", maxed);
maximized = event->window_state.new_window_state & GDK_WINDOW_STATE_MAXIMIZED;
println("Maximization changed to: %d", maximized);
libsaria::prefs::set("ocarina.window.maximized", maximized);
ignore_configure_event = true;
if ( (maximized == false) && (maxed == true) ) {
if (maximized) {
println("Restoring old (w,h): (%d, %d)", old_w, old_h);
libsaria::prefs::set("ocarina.window.w", old_w);
libsaria::prefs::set("ocarina.window.h", old_h);
}
}*/
}
/*static gboolean key_pressed(GtkWidget *widget, GdkEvent *event, gpointer data)
{
@ -146,12 +131,18 @@ using namespace std;
void init_window()
{
GtkWidget *window = get_widget("MainWindow");
if (!window)
return;
GtkWindow *window = GTK_WINDOW(get_widget("MainWindow"));
gtk_window_set_title(GTK_WINDOW(window), ("Ocarina " + vers_str()).c_str());
gtk_window_set_icon_from_file(GTK_WINDOW(window), lib_file("ocarina.png").c_str(), NULL);
gtk_window_set_title(window, ("Ocarina " + vers_str()).c_str());
gtk_window_set_icon_from_file(window, lib_file("ocarina.png").c_str(), NULL);
g_signal_connect(window, "destroy", gtk_main_quit, NULL);
old_w = libsaria::prefs::init("ocarina.window.w", 800);
old_h = libsaria::prefs::init("ocarina.window.h", 600);
gtk_window_resize(window, old_w, old_h);
if (libsaria::prefs::init("ocarina.window.maximized", false) == true)
gtk_window_maximize(window);
connect_signal("MainWindow", "destroy", gtk_main_quit, NULL);
connect_signal("MainWindow", "configure-event", G_CALLBACK(configure), NULL);
connect_signal("MainWindow", "window-state-event", G_CALLBACK(window_state), NULL);
}