Bugfix in RTWindow class, better handling of state change (#3446)

This commit is contained in:
Hombre
2016-12-20 21:45:17 +01:00
parent c7be386c3a
commit c6c5610333

View File

@@ -133,7 +133,7 @@ RTWindow::RTWindow ()
if (options.windowMaximized) {
maximize();
get_style_context()->add_class("maximized");
//get_style_context()->add_class("maximized");
} else {
unmaximize();
move(options.windowX, options.windowY);
@@ -386,51 +386,11 @@ void RTWindow::on_realize ()
bool RTWindow::on_window_state_event(GdkEventWindowState* event)
{
/*
printf("Window state event: %s%s%s%s%s%s%s%s%s\n",
event->new_window_state & GDK_WINDOW_STATE_WITHDRAWN ? "Withdrawn" : "",
event->new_window_state & GDK_WINDOW_STATE_ICONIFIED ? " Iconified" : "",
event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED ? " Maximized" : "",
event->new_window_state & GDK_WINDOW_STATE_STICKY ? " Sticky" : "",
event->new_window_state & GDK_WINDOW_STATE_FULLSCREEN ? " Fullscreen" : "",
event->new_window_state & GDK_WINDOW_STATE_ABOVE ? " Above" : "",
event->new_window_state & GDK_WINDOW_STATE_BELOW ? " Below" : "",
event->new_window_state & GDK_WINDOW_STATE_FOCUSED ? " Focused" : "",
event->new_window_state & GDK_WINDOW_STATE_TILED ? " Tiled" : ""
);
*/
// Return if we get iconified
if (event->new_window_state & GDK_WINDOW_STATE_ICONIFIED) {
return true;
if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED) {
options.windowMaximized = event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED;
}
// Then looking for evolutions of GDK_WINDOW_STATE_FULLSCREEN & GDK_WINDOW_STATE_MAXIMIZED only
bool isFullScreen = event->new_window_state & GDK_WINDOW_STATE_FULLSCREEN;
bool isMaximized = event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED;
bool switchFullScreen = event->changed_mask & GDK_WINDOW_STATE_FULLSCREEN;
bool switchMaximized = event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED;
if (switchFullScreen) {
// Fullscreen mode
if (isFullScreen) {
get_style_context()->add_class("fullscreen");
} else {
get_style_context()->remove_class("fullscreen");
}
}
if (switchMaximized) {
// Maximized mode
if (isMaximized) {
options.windowMaximized = true;
get_style_context()->add_class("maximized");
} else {
options.windowMaximized = false;
get_style_context()->remove_class("maximized");
}
}
return true;
return Gtk::Widget::on_window_state_event(event);
}
void RTWindow::on_mainNB_switch_page(Gtk::Widget* widget, guint page_num)