diff --git a/src/Fl_win32.cxx b/src/Fl_win32.cxx index a97d3133d..aabce8fc6 100644 --- a/src/Fl_win32.cxx +++ b/src/Fl_win32.cxx @@ -2229,8 +2229,10 @@ void Fl_WinAPI_Window_Driver::makeWindow() { int nscreen = 0; if (w->parent()) { nscreen = Fl_Window_Driver::driver(w->top_window())->screen_num(); - } else if (Fl_Window_Driver::driver(w)->force_position() && Fl_WinAPI_Window_Driver::driver(w)->screen_num_ >= 0) { - nscreen = Fl_Window_Driver::driver(w)->screen_num(); + } else if (Fl_Window_Driver::driver(w)->force_position()) { + if (Fl_WinAPI_Window_Driver::driver(w)->screen_num_ >= 0) + nscreen = Fl_WinAPI_Window_Driver::driver(w)->screen_num_; + else nscreen = Fl::screen_num(w->x(), w->y()); } else { Fl_Window *hint = Fl::first_window(); if (hint) { diff --git a/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx b/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx index b1ddc9f91..72131dfe7 100644 --- a/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx +++ b/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx @@ -111,7 +111,7 @@ void Fl_WinAPI_Screen_Driver::init() // we do a run-time check for the required functions... HMODULE hMod = GetModuleHandle("USER32.DLL"); - if (hMod) { + if (hMod && num_screens < 0) { // check that EnumDisplayMonitors is available fl_edm_func fl_edm = (fl_edm_func)GetProcAddress(hMod, "EnumDisplayMonitors"); @@ -125,6 +125,9 @@ void Fl_WinAPI_Screen_Driver::init() // NOTE: num_screens is incremented in screen_cb so we must first reset it here... num_screens = 0; fl_edm(0, 0, screen_cb, (LPARAM)this); + /*fprintf(stderr,"Screen coordinates as seen by Windows: num_screens=%d\n",num_screens); + for(int i=0; i