Remember monitor of main window
This commit is contained in:
@@ -88,7 +88,7 @@ void EditWindow::restoreWindow() {
|
|||||||
int meowMonitor = 0;
|
int meowMonitor = 0;
|
||||||
if(isMultiDisplayEnabled()) {
|
if(isMultiDisplayEnabled()) {
|
||||||
if(options.meowMonitor >= 0) { // use display from last session if available
|
if(options.meowMonitor >= 0) { // use display from last session if available
|
||||||
meowMonitor = std::min(options.meowMonitor, Gdk::Screen::get_default()->get_n_monitors());
|
meowMonitor = std::min(options.meowMonitor, Gdk::Screen::get_default()->get_n_monitors() - 1);
|
||||||
} else { // Determine the other display
|
} else { // Determine the other display
|
||||||
const Glib::RefPtr< Gdk::Window >& wnd = parent->get_window();
|
const Glib::RefPtr< Gdk::Window >& wnd = parent->get_window();
|
||||||
meowMonitor = parent->get_screen()->get_monitor_at_window(wnd) == 0 ? 1 : 0;
|
meowMonitor = parent->get_screen()->get_monitor_at_window(wnd) == 0 ? 1 : 0;
|
||||||
|
@@ -295,6 +295,7 @@ void Options::setDefaults ()
|
|||||||
windowX = 0;
|
windowX = 0;
|
||||||
windowY = 0;
|
windowY = 0;
|
||||||
windowMaximized = true;
|
windowMaximized = true;
|
||||||
|
windowMonitor = 0;
|
||||||
meowMonitor = -1;
|
meowMonitor = -1;
|
||||||
meowFullScreen = false;
|
meowFullScreen = false;
|
||||||
meowMaximized = true;
|
meowMaximized = true;
|
||||||
@@ -1265,6 +1266,10 @@ int Options::readFromFile (Glib::ustring fname)
|
|||||||
windowY = keyFile.get_integer ("GUI", "WindowY");
|
windowY = keyFile.get_integer ("GUI", "WindowY");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (keyFile.has_key ("GUI", "WindowMonitor")) {
|
||||||
|
windowMonitor = keyFile.get_integer ("GUI", "WindowMonitor");
|
||||||
|
}
|
||||||
|
|
||||||
if (keyFile.has_key ("GUI", "MeowMonitor")) {
|
if (keyFile.has_key ("GUI", "MeowMonitor")) {
|
||||||
meowMonitor = keyFile.get_integer ("GUI", "MeowMonitor");
|
meowMonitor = keyFile.get_integer ("GUI", "MeowMonitor");
|
||||||
}
|
}
|
||||||
@@ -2044,6 +2049,7 @@ int Options::saveToFile (Glib::ustring fname)
|
|||||||
keyFile.set_integer ("GUI", "WindowHeight", windowHeight);
|
keyFile.set_integer ("GUI", "WindowHeight", windowHeight);
|
||||||
keyFile.set_integer ("GUI", "WindowX", windowX);
|
keyFile.set_integer ("GUI", "WindowX", windowX);
|
||||||
keyFile.set_integer ("GUI", "WindowY", windowY);
|
keyFile.set_integer ("GUI", "WindowY", windowY);
|
||||||
|
keyFile.set_integer ("GUI", "WindowMonitor", windowMonitor);
|
||||||
keyFile.set_integer ("GUI", "MeowMonitor", meowMonitor);
|
keyFile.set_integer ("GUI", "MeowMonitor", meowMonitor);
|
||||||
keyFile.set_boolean ("GUI", "MeowFullScreen", meowFullScreen);
|
keyFile.set_boolean ("GUI", "MeowFullScreen", meowFullScreen);
|
||||||
keyFile.set_boolean ("GUI", "MeowMaximized", meowMaximized);
|
keyFile.set_boolean ("GUI", "MeowMaximized", meowMaximized);
|
||||||
|
@@ -137,6 +137,7 @@ public:
|
|||||||
int windowWidth;
|
int windowWidth;
|
||||||
int windowHeight;
|
int windowHeight;
|
||||||
bool windowMaximized;
|
bool windowMaximized;
|
||||||
|
int windowMonitor;
|
||||||
int meowMonitor;
|
int meowMonitor;
|
||||||
bool meowFullScreen;
|
bool meowFullScreen;
|
||||||
bool meowMaximized;
|
bool meowMaximized;
|
||||||
|
@@ -128,11 +128,19 @@ RTWindow::RTWindow ()
|
|||||||
set_default_size(options.windowWidth, options.windowHeight);
|
set_default_size(options.windowWidth, options.windowHeight);
|
||||||
set_modal(false);
|
set_modal(false);
|
||||||
|
|
||||||
|
Gdk::Rectangle lMonitorRect;
|
||||||
|
get_screen()->get_monitor_geometry(std::min(options.windowMonitor, Gdk::Screen::get_default()->get_n_monitors() - 1), lMonitorRect);
|
||||||
if (options.windowMaximized) {
|
if (options.windowMaximized) {
|
||||||
|
move(lMonitorRect.get_x(), lMonitorRect.get_y());
|
||||||
maximize();
|
maximize();
|
||||||
} else {
|
} else {
|
||||||
unmaximize();
|
unmaximize();
|
||||||
|
resize(options.windowWidth, options.windowHeight);
|
||||||
|
if(options.windowX <= lMonitorRect.get_x() + lMonitorRect.get_width() && options.windowY <= lMonitorRect.get_y() + lMonitorRect.get_height()) {
|
||||||
move(options.windowX, options.windowY);
|
move(options.windowX, options.windowY);
|
||||||
|
} else {
|
||||||
|
move(lMonitorRect.get_x(), lMonitorRect.get_y());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
on_delete_has_run = false;
|
on_delete_has_run = false;
|
||||||
@@ -597,15 +605,11 @@ bool RTWindow::on_delete_event(GdkEventAny* event)
|
|||||||
bool isProcessing = false;
|
bool isProcessing = false;
|
||||||
EditWindow* editWindow = nullptr;
|
EditWindow* editWindow = nullptr;
|
||||||
|
|
||||||
|
|
||||||
if (isSingleTabMode() || simpleEditor) {
|
if (isSingleTabMode() || simpleEditor) {
|
||||||
isProcessing = epanel->getIsProcessing();
|
isProcessing = epanel->getIsProcessing();
|
||||||
} else if (options.multiDisplayMode > 0) {
|
} else if (options.multiDisplayMode > 0) {
|
||||||
editWindow = EditWindow::getInstance(this, false);
|
editWindow = EditWindow::getInstance(this, false);
|
||||||
|
isProcessing = editWindow->isProcessing();
|
||||||
if (editWindow->isProcessing ()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
int pageCount = mainNB->get_n_pages();
|
int pageCount = mainNB->get_n_pages();
|
||||||
|
|
||||||
@@ -631,15 +635,14 @@ bool RTWindow::on_delete_event(GdkEventAny* event)
|
|||||||
if ((isSingleTabMode() || simpleEditor) && epanel->isRealized()) {
|
if ((isSingleTabMode() || simpleEditor) && epanel->isRealized()) {
|
||||||
epanel->saveProfile();
|
epanel->saveProfile();
|
||||||
epanel->writeOptions ();
|
epanel->writeOptions ();
|
||||||
}
|
} else {
|
||||||
else {
|
if (options.multiDisplayMode > 0 && editWindow) {
|
||||||
if (options.multiDisplayMode > 0) {
|
|
||||||
editWindow->closeOpenEditors();
|
editWindow->closeOpenEditors();
|
||||||
editWindow->writeOptions();
|
editWindow->writeOptions();
|
||||||
}
|
} else if (epanels.size()) {
|
||||||
// Storing the options of the last EditorPanel before Gtk destroys everything
|
// Storing the options of the last EditorPanel before Gtk destroys everything
|
||||||
// Look at the active panel first, if any, otherwise look at the first one (sorted on the filename)
|
// Look at the active panel first, if any, otherwise look at the first one (sorted on the filename)
|
||||||
else if (epanels.size()) {
|
|
||||||
int page = mainNB->get_current_page();
|
int page = mainNB->get_current_page();
|
||||||
Gtk::Widget *w = mainNB->get_nth_page(page);
|
Gtk::Widget *w = mainNB->get_nth_page(page);
|
||||||
bool optionsWritten = false;
|
bool optionsWritten = false;
|
||||||
@@ -668,6 +671,8 @@ bool RTWindow::on_delete_event(GdkEventAny* event)
|
|||||||
get_position (options.windowX, options.windowY);
|
get_position (options.windowX, options.windowY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
options.windowMonitor = get_screen()->get_monitor_at_window(get_window());
|
||||||
|
|
||||||
Options::save ();
|
Options::save ();
|
||||||
hide();
|
hide();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user