/////////////////////////////////////////////////////////////////////////////
-// Name: src/x11/windows.cpp
+// Name: src/x11/window.cpp
// Purpose: wxWindow
// Author: Julian Smart
// Modified by:
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
+// for compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#if defined(__BORLANDC__)
+ #pragma hdrstop
+#endif
+
// ============================================================================
// declarations
// ============================================================================
// headers
// ----------------------------------------------------------------------------
-#include "wx/setup.h"
-#include "wx/menu.h"
-#include "wx/dc.h"
-#include "wx/dcclient.h"
-#include "wx/utils.h"
-#include "wx/app.h"
-#include "wx/panel.h"
-#include "wx/layout.h"
-#include "wx/dialog.h"
-#include "wx/listbox.h"
-#include "wx/button.h"
-#include "wx/settings.h"
-#include "wx/msgdlg.h"
-#include "wx/frame.h"
-#include "wx/scrolwin.h"
-#include "wx/scrolbar.h"
-#include "wx/module.h"
-#include "wx/menuitem.h"
-#include "wx/log.h"
+#include "wx/window.h"
+
+#ifndef WX_PRECOMP
+ #include "wx/hash.h"
+ #include "wx/log.h"
+ #include "wx/app.h"
+ #include "wx/utils.h"
+ #include "wx/panel.h"
+ #include "wx/frame.h"
+ #include "wx/dc.h"
+ #include "wx/dcclient.h"
+ #include "wx/button.h"
+ #include "wx/menu.h"
+ #include "wx/dialog.h"
+ #include "wx/timer.h"
+ #include "wx/settings.h"
+ #include "wx/msgdlg.h"
+ #include "wx/scrolbar.h"
+ #include "wx/listbox.h"
+ #include "wx/scrolwin.h"
+ #include "wx/layout.h"
+ #include "wx/menuitem.h"
+ #include "wx/module.h"
+#endif
+
#include "wx/fontutil.h"
#include "wx/univ/renderer.h"
-#include "wx/hash.h"
#if wxUSE_DRAG_AND_DROP
#include "wx/dnd.h"
#include "wx/x11/private.h"
#include "X11/Xutil.h"
-#if wxUSE_NANOX
-// For wxGetLocalTime, used by XButtonEventGetTime
-#include "wx/timer.h"
-#endif
-
#include <string.h>
// ----------------------------------------------------------------------------
{
if ((g_captureWindow != NULL) && (g_captureWindow != this))
{
- wxASSERT_MSG(false, wxT("Trying to capture before mouse released."));
+ wxFAIL_MSG(wxT("Trying to capture before mouse released."));
// Core dump now
int *tmp = NULL;
int direction, ascent, descent2;
XCharStruct overall;
- int slen = string.Len();
+ int slen = string.length();
XTextExtents((XFontStruct*) pFontStruct, (char*) string.c_str(), slen,
&direction, &ascent, &descent2, &overall);
return wxFindWindowAtPoint(wxGetMousePosition());
}
-// Get the current mouse position.
-wxPoint wxGetMousePosition()
+void wxGetMouseState(int& rootX, int& rootY, unsigned& maskReturn)
{
#if wxUSE_NANOX
/* TODO */
- return wxPoint(0, 0);
+ rootX = rootY = 0;
+ maskReturn = 0;
#else
Display *display = wxGlobalDisplay();
Window rootWindow = RootWindowOfScreen (DefaultScreenOfDisplay(display));
Window rootReturn, childReturn;
- int rootX, rootY, winX, winY;
- unsigned int maskReturn;
+ int winX, winY;
XQueryPointer (display,
rootWindow,
&rootReturn,
&childReturn,
&rootX, &rootY, &winX, &winY, &maskReturn);
- return wxPoint(rootX, rootY);
#endif
}
+// Get the current mouse position.
+wxPoint wxGetMousePosition()
+{
+ int x, y;
+ unsigned mask;
+
+ wxGetMouseState(x, y, mask);
+ return wxPoint(x, y);
+}
+
+wxMouseState wxGetMouseState()
+{
+ wxMouseState ms;
+ int x, y;
+ unsigned mask;
+
+ wxGetMouseState(x, y, mask);
+
+ ms.SetX(x);
+ ms.SetY(y);
+
+ ms.SetLeftDown(mask & Button1Mask);
+ ms.SetMiddleDown(mask & Button2Mask);
+ ms.SetRightDown(mask & Button3Mask);
+
+ ms.SetControlDown(mask & ControlMask);
+ ms.SetShiftDown(mask & ShiftMask);
+ ms.SetAltDown(mask & Mod3Mask);
+ ms.SetMetaDown(mask & Mod1Mask);
+
+ return ms;
+}
+
// ----------------------------------------------------------------------------
// wxNoOptimize: switch off size optimization