X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2980fc88d3fd775d30bb96dcea17fd59c2553f82..065ab451bf9bcf7986049ff82b8b456ecc559aa4:/src/unix/displayx11.cpp diff --git a/src/unix/displayx11.cpp b/src/unix/displayx11.cpp index 4e1bb56b84..a51285f3b8 100644 --- a/src/unix/displayx11.cpp +++ b/src/unix/displayx11.cpp @@ -5,7 +5,7 @@ // Modified by: // Created: 12/05/02 // RCS-ID: $Id$ -// Copyright: (c) wxWindows team +// Copyright: (c) wxWidgets team // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -21,6 +21,7 @@ #endif #include "wx/display.h" +#include "wx/intl.h" #include "wx/log.h" #ifndef WX_PRECOMP @@ -38,7 +39,9 @@ extern "C" { #include #include #include +#ifdef HAVE_X11_EXTENSIONS_XF86VMODE_H #include +#endif } class wxDisplayUnixPriv @@ -81,9 +84,9 @@ int wxDisplayBase::GetFromPoint(const wxPoint &p) for (i = 0; i < numscreens; ++i) { if (p.x >= screenarr[i].x_org && - p.x <= screenarr[i].x_org + screenarr[i].width && + p.x < screenarr[i].x_org + screenarr[i].width && p.y >= screenarr[i].y_org && - p.y <= screenarr[i].y_org + screenarr[i].height) + p.y < screenarr[i].y_org + screenarr[i].height) { which_screen = i; } @@ -96,9 +99,9 @@ int wxDisplayBase::GetFromPoint(const wxPoint &p) { wxSize size = wxGetDisplaySize(); if (p.x >= 0 && - p.x <= size.GetWidth() && - p.y > 0 && - p.y <= size.GetHeight()) + p.x < size.GetWidth() && + p.y >= 0 && + p.y < size.GetHeight()) { return 0; } @@ -116,6 +119,7 @@ wxDisplay::wxDisplay(size_t index) : wxDisplayBase ( index ), m_priv( new wxDisp XineramaScreenInfo *screenarr; int numscreens; screenarr = XineramaQueryScreens(disp, &numscreens); + m_priv->m_rect = wxRect(screenarr[index].x_org, screenarr[index].y_org, screenarr[index].width, screenarr[index].height); m_priv->m_depth = DefaultDepth(disp, DefaultScreen(disp)); @@ -149,6 +153,9 @@ wxString wxDisplay::GetName() const return wxEmptyString; } + +#ifdef HAVE_X11_EXTENSIONS_XF86VMODE_H + // // See (http://www.xfree86.org/4.2.0/XF86VidModeDeleteModeLine.3.html) for more // info about xf86 video mode extensions @@ -191,7 +198,7 @@ wxArrayVideoModes wxDisplay::GetModes(const wxVideoMode& mode) const } else //OOPS! { - wxLogSysError("XF86VidModeGetAllModeLines Failed in wxX11Display::GetModes()!"); + wxLogSysError(_("Failed to enumerate video modes")); } return Modes; @@ -252,11 +259,44 @@ bool wxDisplay::ChangeMode(const wxVideoMode& mode) } else //OOPS! { - wxLogSysError("XF86VidModeGetAllModeLines Failed in wxX11Display::ChangeMode()!"); + wxLogSysError(_("Failed to change video mode")); return false; } } } -#endif /* wxUSE_DISPLAY */ +#else // !HAVE_X11_EXTENSIONS_XF86VMODE_H + +wxArrayVideoModes wxDisplay::GetModes(const wxVideoMode& mode) const +{ + Display *disp = (Display*)wxGetDisplay(); + int count_return; + int* depths = XListDepths(disp, 0, &count_return); + wxArrayVideoModes modes; + if (depths) + { + int x; + for (x = 0; x < count_return; ++x) + { + modes.Add(wxVideoMode(m_priv->m_rect.GetWidth(), m_priv->m_rect.GetHeight(), depths[x])); + } + } + return modes; +} + +wxVideoMode wxDisplay::GetCurrentMode() const +{ + // Not implemented + return wxVideoMode(); +} + +bool wxDisplay::ChangeMode(const wxVideoMode& mode) +{ + // Not implemented + return false; +} + +#endif // !HAVE_X11_EXTENSIONS_XF86VMODE_H + +#endif /* wxUSE_DISPLAY */