Support for landscape mode. 88/162988/4
authorPawel Kurowski <p.kurowski2@samsung.com>
Wed, 6 Dec 2017 18:16:03 +0000 (19:16 +0100)
committerPawel Kurowski <p.kurowski2@samsung.com>
Thu, 7 Dec 2017 14:03:32 +0000 (15:03 +0100)
Change-Id: Ib16cc0b433631d199f22589d4669374e5a123eb9

src/SelectActivity.cpp
src/Window.cpp
src/Window.hpp

index 29d940b..7a9a4d3 100644 (file)
@@ -213,12 +213,8 @@ void SelectActivity::createMenu()
        evas_object_size_hint_weight_set(popup.get(), EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
        evas_object_smart_callback_add(popup.get(), "dismissed", popupDismissedCb, this);
        menu = Singleton<MenuBuilder>::instance().build(getCompleteLabelOfMenu());
-       if (menu->getAlignment() == Alignment::BOTTOM) {
-               elm_popup_orient_set(popup.get(), ELM_POPUP_ORIENT_BOTTOM);
-               elm_popup_align_set(popup.get(), ELM_NOTIFY_ALIGN_FILL, EVAS_HINT_EXPAND);
-       } else {
-               elm_popup_orient_set(popup.get(), ELM_POPUP_ORIENT_CENTER);
-       }
+       elm_popup_orient_set(popup.get(), menu->getAlignment() == Alignment::BOTTOM ? ELM_POPUP_ORIENT_BOTTOM : ELM_POPUP_ORIENT_CENTER);
+
 
        elm_theme_extension_add(NULL, UNIVERSAL_SWITCH_EDJ);
        elm_object_style_set(popup.get(), "universalSwitchTransparent");
index e3c4a78..89de9f6 100644 (file)
@@ -20,7 +20,7 @@
 #include "Ecore_Wayland.h"
 
 Window::Window()
-       : handler(nullptr, removeHandler), screenWidth(0), screenHeight(0)
+       : handler(nullptr, removeHandler)
 {
        DEBUG("adding window");
        auto windowHandler = elm_win_add(NULL, "universal-switch", ELM_WIN_NOTIFICATION);
@@ -29,6 +29,8 @@ Window::Window()
                exit(1);
        }
 
+       handler.reset(windowHandler);
+
        // TODO: name setter should be removed after reaching full functionality by navigation interface
        elm_atspi_accessible_name_set(windowHandler, "UniversalSwitch Main Window");
 
@@ -36,12 +38,13 @@ Window::Window()
        elm_win_override_set(windowHandler, EINA_TRUE);
        elm_win_alpha_set(windowHandler, EINA_TRUE);
 
-       elm_win_screen_size_get(windowHandler, NULL, NULL, &screenWidth, &screenHeight);
-       evas_object_resize(windowHandler, screenWidth, screenHeight);
+       auto size = getDimensions().size;
+       evas_object_resize(windowHandler, size.width, size.height);
+       int rotations[] = {0, 90, 270};
+       elm_win_wm_rotation_available_rotations_set(windowHandler, rotations, 3);
        evas_object_show(windowHandler);
 
        waylandWindow = elm_win_wl_window_get(windowHandler);
-       handler.reset(windowHandler);
        ecore_wl_window_input_region_set(waylandWindow, 0, 0, 0, 0);
        ecore_wl_window_focus_skip_set(waylandWindow, EINA_TRUE);
 
@@ -79,6 +82,10 @@ void Window::removeHandler(Evas_Object *handler)
 
 Rectangle Window::getDimensions() const
 {
+       int screenWidth, screenHeight;
+       elm_win_screen_size_get(handler.get(), NULL, NULL, &screenWidth, &screenHeight);
+       if (elm_win_rotation_get(handler.get()) != 0)
+               std::swap(screenWidth, screenHeight);
        return {{0, 0}, {screenWidth, screenHeight}};
 }
 
index 7a59b59..0a41f70 100644 (file)
@@ -40,8 +40,6 @@ private:
 
        std::unique_ptr<Evas_Object, void(*)(Evas_Object *)> handler;
        Ecore_Wl_Window *waylandWindow;
-       int screenWidth;
-       int screenHeight;
        std::unique_ptr<Quickpanel> quickpanel;
 };