Bugfix in RTWindow class, better handling of state change (#3446)
This commit is contained in:
@@ -133,7 +133,7 @@ RTWindow::RTWindow ()
|
|||||||
|
|
||||||
if (options.windowMaximized) {
|
if (options.windowMaximized) {
|
||||||
maximize();
|
maximize();
|
||||||
get_style_context()->add_class("maximized");
|
//get_style_context()->add_class("maximized");
|
||||||
} else {
|
} else {
|
||||||
unmaximize();
|
unmaximize();
|
||||||
move(options.windowX, options.windowY);
|
move(options.windowX, options.windowY);
|
||||||
@@ -386,51 +386,11 @@ void RTWindow::on_realize ()
|
|||||||
|
|
||||||
bool RTWindow::on_window_state_event(GdkEventWindowState* event)
|
bool RTWindow::on_window_state_event(GdkEventWindowState* event)
|
||||||
{
|
{
|
||||||
/*
|
if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED) {
|
||||||
printf("Window state event: %s%s%s%s%s%s%s%s%s\n",
|
options.windowMaximized = event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED;
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Then looking for evolutions of GDK_WINDOW_STATE_FULLSCREEN & GDK_WINDOW_STATE_MAXIMIZED only
|
return Gtk::Widget::on_window_state_event(event);
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RTWindow::on_mainNB_switch_page(Gtk::Widget* widget, guint page_num)
|
void RTWindow::on_mainNB_switch_page(Gtk::Widget* widget, guint page_num)
|
||||||
|
Reference in New Issue
Block a user