#include "Ecore_Wayland.h"
Window::Window()
- : handler(nullptr, evas_object_del), screenWidth(0), screenHeight(0)
+ : handler(nullptr, removeHandler), screenWidth(0), screenHeight(0)
{
DEBUG("adding window");
auto windowHandler = elm_win_add(NULL, "universal-switch", ELM_WIN_NOTIFICATION);
handler.reset(windowHandler);
ecore_wl_window_input_region_set(waylandWindow, 0, 0, 0, 0);
ecore_wl_window_focus_skip_set(waylandWindow, EINA_TRUE);
+
+ auto status = efl_util_set_window_screen_mode(windowHandler, EFL_UTIL_SCREEN_MODE_ALWAYS_ON);
+ if (status)
+ ERROR("Display mode cannot be set %d", status);
+
quickpanel = std::make_unique<Quickpanel>(windowHandler);
}
return handler.get();
}
+void Window::removeHandler(Evas_Object *handler)
+{
+ DEBUG("Removing window");
+
+ /**
+ * evas_object_del is not enough to restore EFL_UTIL_SCREEN_MODE_DEFAULT, event won't be noticed by screen manager
+ * bug in efl_util_set_window_screen_mode implementation requires setting default mode on display on window closure
+ */
+ auto status = efl_util_set_window_screen_mode(handler, EFL_UTIL_SCREEN_MODE_DEFAULT);
+ if (status)
+ ERROR("Display mode cannot be set %d", status);
+
+ evas_object_del(handler);
+}
+
Rectangle Window::getDimensions() const
{
return {{0, 0}, {screenWidth, screenHeight}};