1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-18 14:21:41 +00:00

Open sub-windows as embedded if the OS does not support them

This commit is contained in:
Juan Linietsky
2020-03-14 13:06:39 -03:00
parent 441f1a5fe9
commit c7b4dcae2f
32 changed files with 1027 additions and 636 deletions

View File

@@ -708,13 +708,13 @@ void DisplayServerX11::window_set_title(const String &p_title, WindowID p_window
XChangeProperty(x11_display, wd.x11_window, _net_wm_name, utf8_string, 8, PropModeReplace, (unsigned char *)p_title.utf8().get_data(), p_title.utf8().length());
}
void DisplayServerX11::window_set_resize_callback(const Callable &p_callable, WindowID p_window) {
void DisplayServerX11::window_set_rect_changed_callback(const Callable &p_callable, WindowID p_window) {
_THREAD_SAFE_METHOD_
ERR_FAIL_COND(!windows.has(p_window));
WindowData &wd = windows[p_window];
wd.resize_callback = p_callable;
wd.rect_changed_callback = p_callable;
}
void DisplayServerX11::window_set_window_event_callback(const Callable &p_callable, WindowID p_window) {
@@ -2224,12 +2224,12 @@ void DisplayServerX11::_window_changed(XEvent *event) {
}
#endif
if (!wd.resize_callback.is_null()) {
Variant size = wd.size;
Variant *sizep = &size;
if (!wd.rect_changed_callback.is_null()) {
Variant rect = Rect2i(wd.im_position, wd.size);
Variant *rectp = ▭
Variant ret;
Callable::CallError ce;
wd.resize_callback.call((const Variant **)&sizep, 1, ret, ce);
wd.rect_changed_callback.call((const Variant **)&rectp, 1, ret, ce);
}
}

View File

@@ -121,7 +121,7 @@ class DisplayServerX11 : public DisplayServer {
Size2i size;
Size2i im_position;
bool im_active = false;
Callable resize_callback;
Callable rect_changed_callback;
Callable event_callback;
Callable input_event_callback;
Callable input_text_callback;
@@ -268,7 +268,7 @@ public:
virtual void delete_sub_window(WindowID p_id);
virtual void window_set_title(const String &p_title, WindowID p_window = MAIN_WINDOW_ID);
virtual void window_set_resize_callback(const Callable &p_callable, WindowID p_window = MAIN_WINDOW_ID);
virtual void window_set_rect_changed_callback(const Callable &p_callable, WindowID p_window = MAIN_WINDOW_ID);
virtual void window_set_window_event_callback(const Callable &p_callable, WindowID p_window = MAIN_WINDOW_ID);
virtual void window_set_input_event_callback(const Callable &p_callable, WindowID p_window = MAIN_WINDOW_ID);
virtual void window_set_input_text_callback(const Callable &p_callable, WindowID p_window = MAIN_WINDOW_ID);