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:
parent
fc46bea1d1
commit
c026686a1b
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue