_viewer.set_pad_black(_mode != Config::PLAYER_MODE_WINDOW);
if (_mode == Config::PLAYER_MODE_DUAL) {
+ std::cout << "Set up dual screen mode: " << wxDisplay::GetCount() << " displays.\n";
_dual_screen = new wxFrame (this, wxID_ANY, wxT(""));
_dual_screen->SetBackgroundColour (wxColour(0, 0, 0));
_dual_screen->ShowFullScreen (true);
_viewer.panel()->Reparent(_dual_screen);
_viewer.panel()->SetFocus();
_dual_screen->Show ();
+ for (auto index = 0U; index < wxDisplay::GetCount(); ++index) {
+ auto client = wxDisplay(index).GetClientArea();
+ auto mode = wxDisplay(index).GetCurrentMode();
+ auto geometry = wxDisplay(index).GetGeometry();
+ std::cout << "Display " << index << "\n";
+ std::cout << " ClientArea (" << client.GetX() << ", " << client.GetY() << ") (" << client.GetWidth() << ", " << client.GetHeight() << ")\n";
+ std::cout << " Geometry (" << geometry.GetX() << ", " << geometry.GetY() << ") (" << geometry.GetWidth() << ", " << geometry.GetHeight() << ")\n";
+ std::cout << " Mode (" << mode.GetWidth() << ", " << mode.GetHeight() << ")\n";
+ std::cout << " Primary? " << wxDisplay(index).IsPrimary() << "\n";
+ }
if (wxDisplay::GetCount() > 1) {
- switch (Config::instance()->image_display()) {
- case 0:
- _dual_screen->Move (0, 0);
- Move (wxDisplay(0U).GetClientArea().GetWidth(), 0);
- break;
- case 1:
- _dual_screen->Move (wxDisplay(0U).GetClientArea().GetWidth(), 0);
- // (0, 0) doesn't seem to work for some strange reason
- Move (8, 8);
- break;
- }
+ wxRect geometry[2] = {
+ wxDisplay(0U).GetGeometry(),
+ wxDisplay(1U).GetGeometry()
+ };
+ auto const image_display = Config::instance()->image_display();
+ _dual_screen->Move(geometry[image_display].GetX(), geometry[image_display].GetY());
+ _viewer.panel()->SetSize(geometry[image_display].GetWidth(), geometry[image_display].GetHeight());
+ Move(geometry[1 - image_display].GetX(), geometry[1 - image_display].GetY());
}
_dual_screen->Bind(wxEVT_CHAR_HOOK, boost::bind(&DOMFrame::dual_screen_key_press, this, _1));
} else {