summaryrefslogtreecommitdiff
path: root/platform/linuxbsd
diff options
context:
space:
mode:
authorbruvzg <7645683+bruvzg@users.noreply.github.com>2020-03-07 18:02:54 +0200
committerbruvzg <7645683+bruvzg@users.noreply.github.com>2020-03-26 16:24:05 +0100
commit15a9f94346c211b7afe96af500cb3405aabcf6b8 (patch)
tree150287a257a89a0ff579bcc81baa75a0bbca8c79 /platform/linuxbsd
parent197cb4e7718034aba35832a547477dfc858a7280 (diff)
Add macOS DisplayServer implementation.
Change global menu to use Callable, add support for check items and submenus.
Diffstat (limited to 'platform/linuxbsd')
-rw-r--r--platform/linuxbsd/display_server_x11.cpp18
-rw-r--r--platform/linuxbsd/display_server_x11.h1
2 files changed, 19 insertions, 0 deletions
diff --git a/platform/linuxbsd/display_server_x11.cpp b/platform/linuxbsd/display_server_x11.cpp
index f284a5f92d..4bea458187 100644
--- a/platform/linuxbsd/display_server_x11.cpp
+++ b/platform/linuxbsd/display_server_x11.cpp
@@ -421,9 +421,27 @@ void DisplayServerX11::mouse_warp_to_position(const Point2i &p_to) {
0, 0, 0, 0, (int)p_to.x, (int)p_to.y);
}
}
+
Point2i DisplayServerX11::mouse_get_position() const {
return last_mouse_pos;
}
+
+Point2i DisplayServerX11::mouse_get_absolute_position() const {
+ int number_of_screens = XScreenCount(x11_display);
+ for (int i = 0; i < number_of_screens; i++) {
+ Window root, child;
+ int root_x, root_y, win_x, win_y;
+ unsigned int mask;
+ if (XQueryPointer(x11_display, XRootWindow(x11_display, i), &root, &child, &root_x, &root_y, &win_x, &win_y, &mask)) {
+ XWindowAttributes root_attrs;
+ XGetWindowAttributes(x11_display, root, &root_attrs);
+
+ return Vector2i(root_attrs.x + root_x, root_attrs.y + root_y);
+ }
+ }
+ return Vector2i();
+}
+
int DisplayServerX11::mouse_get_button_state() const {
return last_button_state;
}
diff --git a/platform/linuxbsd/display_server_x11.h b/platform/linuxbsd/display_server_x11.h
index 46d33fbe7d..d1680b0508 100644
--- a/platform/linuxbsd/display_server_x11.h
+++ b/platform/linuxbsd/display_server_x11.h
@@ -254,6 +254,7 @@ public:
virtual void mouse_warp_to_position(const Point2i &p_to);
virtual Point2i mouse_get_position() const;
+ virtual Point2i mouse_get_absolute_position() const;
virtual int mouse_get_button_state() const;
virtual void clipboard_set(const String &p_text);