OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/exo/wayland/server.h" | 5 #include "components/exo/wayland/server.h" |
6 | 6 |
7 #include <grp.h> | 7 #include <grp.h> |
8 #include <linux/input.h> | 8 #include <linux/input.h> |
9 #include <stddef.h> | 9 #include <stddef.h> |
10 #include <stdint.h> | 10 #include <stdint.h> |
(...skipping 1458 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1469 | 1469 |
1470 void remote_surface_minimize(wl_client* client, wl_resource* resource) { | 1470 void remote_surface_minimize(wl_client* client, wl_resource* resource) { |
1471 GetUserDataAs<ShellSurface>(resource)->Minimize(); | 1471 GetUserDataAs<ShellSurface>(resource)->Minimize(); |
1472 } | 1472 } |
1473 | 1473 |
1474 void remote_surface_restore(wl_client* client, wl_resource* resource) { | 1474 void remote_surface_restore(wl_client* client, wl_resource* resource) { |
1475 GetUserDataAs<ShellSurface>(resource)->Restore(); | 1475 GetUserDataAs<ShellSurface>(resource)->Restore(); |
1476 } | 1476 } |
1477 | 1477 |
1478 void remote_surface_pin(wl_client* client, wl_resource* resource) { | 1478 void remote_surface_pin(wl_client* client, wl_resource* resource) { |
1479 GetUserDataAs<ShellSurface>(resource)->SetPinned(true); | 1479 GetUserDataAs<ShellSurface>(resource)->SetPinned(true, /* trusted */ false); |
1480 } | 1480 } |
1481 | 1481 |
1482 void remote_surface_unpin(wl_client* client, wl_resource* resource) { | 1482 void remote_surface_unpin(wl_client* client, wl_resource* resource) { |
1483 GetUserDataAs<ShellSurface>(resource)->SetPinned(false); | 1483 GetUserDataAs<ShellSurface>(resource)->SetPinned(false, /* trusted */ false); |
1484 } | 1484 } |
1485 | 1485 |
1486 void remote_surface_unfullscreen(wl_client* client, wl_resource* resource) { | 1486 void remote_surface_unfullscreen(wl_client* client, wl_resource* resource) { |
1487 GetUserDataAs<ShellSurface>(resource)->SetFullscreen(false); | 1487 GetUserDataAs<ShellSurface>(resource)->SetFullscreen(false); |
1488 } | 1488 } |
1489 | 1489 |
1490 void remote_surface_set_rectangular_shadow(wl_client* client, | 1490 void remote_surface_set_rectangular_shadow(wl_client* client, |
1491 wl_resource* resource, | 1491 wl_resource* resource, |
1492 int32_t x, | 1492 int32_t x, |
1493 int32_t y, | 1493 int32_t y, |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1526 GetUserDataAs<ShellSurface>(resource)->SetRectangularShadowBackgroundOpacity( | 1526 GetUserDataAs<ShellSurface>(resource)->SetRectangularShadowBackgroundOpacity( |
1527 wl_fixed_to_double(opacity)); | 1527 wl_fixed_to_double(opacity)); |
1528 } | 1528 } |
1529 | 1529 |
1530 void remote_surface_activate(wl_client* client, | 1530 void remote_surface_activate(wl_client* client, |
1531 wl_resource* resource, | 1531 wl_resource* resource, |
1532 uint32_t serial) { | 1532 uint32_t serial) { |
1533 GetUserDataAs<ShellSurface>(resource)->Activate(); | 1533 GetUserDataAs<ShellSurface>(resource)->Activate(); |
1534 } | 1534 } |
1535 | 1535 |
1536 void remote_surface_pin_with_trusted_flag(wl_client* client, | |
1537 wl_resource* resource, | |
1538 int32_t trusted) { | |
1539 GetUserDataAs<ShellSurface>(resource)->SetPinned(true, trusted); | |
1540 } | |
1541 | |
1536 const struct zwp_remote_surface_v1_interface remote_surface_implementation = { | 1542 const struct zwp_remote_surface_v1_interface remote_surface_implementation = { |
1537 remote_surface_destroy, | 1543 remote_surface_destroy, |
1538 remote_surface_set_app_id, | 1544 remote_surface_set_app_id, |
1539 remote_surface_set_window_geometry, | 1545 remote_surface_set_window_geometry, |
1540 remote_surface_set_scale, | 1546 remote_surface_set_scale, |
1541 remote_surface_fullscreen, | 1547 remote_surface_fullscreen, |
1542 remote_surface_maximize, | 1548 remote_surface_maximize, |
1543 remote_surface_minimize, | 1549 remote_surface_minimize, |
1544 remote_surface_restore, | 1550 remote_surface_restore, |
1545 remote_surface_pin, | 1551 remote_surface_pin, |
1546 remote_surface_unpin, | 1552 remote_surface_unpin, |
1547 remote_surface_unfullscreen, | 1553 remote_surface_unfullscreen, |
1548 remote_surface_set_rectangular_shadow, | 1554 remote_surface_set_rectangular_shadow, |
1549 remote_surface_set_title, | 1555 remote_surface_set_title, |
1550 remote_surface_set_top_inset, | 1556 remote_surface_set_top_inset, |
1551 remote_surface_set_system_modal, | 1557 remote_surface_set_system_modal, |
1552 remote_surface_unset_system_modal, | 1558 remote_surface_unset_system_modal, |
1553 remote_surface_set_rectangular_shadow_background_opacity, | 1559 remote_surface_set_rectangular_shadow_background_opacity, |
1554 remote_surface_activate}; | 1560 remote_surface_activate, |
1561 remote_surface_pin_with_trusted_flag}; | |
1555 | 1562 |
1556 //////////////////////////////////////////////////////////////////////////////// | 1563 //////////////////////////////////////////////////////////////////////////////// |
1557 // notification_surface_interface: | 1564 // notification_surface_interface: |
1558 | 1565 |
1559 void notification_surface_destroy(wl_client* client, wl_resource* resource) { | 1566 void notification_surface_destroy(wl_client* client, wl_resource* resource) { |
1560 wl_resource_destroy(resource); | 1567 wl_resource_destroy(resource); |
1561 } | 1568 } |
1562 | 1569 |
1563 const struct zwp_notification_surface_v1_interface | 1570 const struct zwp_notification_surface_v1_interface |
1564 notification_surface_implementation = {notification_surface_destroy}; | 1571 notification_surface_implementation = {notification_surface_destroy}; |
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1789 zwp_remote_surface_v1_send_unset_minimized(resource); | 1796 zwp_remote_surface_v1_send_unset_minimized(resource); |
1790 break; | 1797 break; |
1791 case ash::wm::WINDOW_STATE_TYPE_MAXIMIZED: | 1798 case ash::wm::WINDOW_STATE_TYPE_MAXIMIZED: |
1792 if (wl_resource_get_version(resource) >= 2) | 1799 if (wl_resource_get_version(resource) >= 2) |
1793 zwp_remote_surface_v1_send_unset_maximized(resource); | 1800 zwp_remote_surface_v1_send_unset_maximized(resource); |
1794 break; | 1801 break; |
1795 case ash::wm::WINDOW_STATE_TYPE_FULLSCREEN: | 1802 case ash::wm::WINDOW_STATE_TYPE_FULLSCREEN: |
1796 zwp_remote_surface_v1_send_unset_fullscreen(resource); | 1803 zwp_remote_surface_v1_send_unset_fullscreen(resource); |
1797 break; | 1804 break; |
1798 case ash::wm::WINDOW_STATE_TYPE_PINNED: | 1805 case ash::wm::WINDOW_STATE_TYPE_PINNED: |
1806 case ash::wm::WINDOW_STATE_TYPE_TRUSTED_PINNED: | |
1799 if (wl_resource_get_version(resource) >= 3) | 1807 if (wl_resource_get_version(resource) >= 3) |
1800 zwp_remote_surface_v1_send_unset_pinned(resource); | 1808 zwp_remote_surface_v1_send_unset_pinned(resource); |
1801 break; | 1809 break; |
1802 default: | 1810 default: |
1803 break; | 1811 break; |
1804 } | 1812 } |
1805 | 1813 |
1806 uint32_t state_type = ZWP_REMOTE_SHELL_V1_STATE_TYPE_NORMAL; | 1814 uint32_t state_type = ZWP_REMOTE_SHELL_V1_STATE_TYPE_NORMAL; |
1807 switch (new_state_type) { | 1815 switch (new_state_type) { |
1808 case ash::wm::WINDOW_STATE_TYPE_MINIMIZED: | 1816 case ash::wm::WINDOW_STATE_TYPE_MINIMIZED: |
1809 state_type = ZWP_REMOTE_SHELL_V1_STATE_TYPE_MINIMIZED; | 1817 state_type = ZWP_REMOTE_SHELL_V1_STATE_TYPE_MINIMIZED; |
1810 if (wl_resource_get_version(resource) >= 2) | 1818 if (wl_resource_get_version(resource) >= 2) |
1811 zwp_remote_surface_v1_send_set_minimized(resource); | 1819 zwp_remote_surface_v1_send_set_minimized(resource); |
1812 break; | 1820 break; |
1813 case ash::wm::WINDOW_STATE_TYPE_MAXIMIZED: | 1821 case ash::wm::WINDOW_STATE_TYPE_MAXIMIZED: |
1814 state_type = ZWP_REMOTE_SHELL_V1_STATE_TYPE_MAXIMIZED; | 1822 state_type = ZWP_REMOTE_SHELL_V1_STATE_TYPE_MAXIMIZED; |
1815 if (wl_resource_get_version(resource) >= 2) | 1823 if (wl_resource_get_version(resource) >= 2) |
1816 zwp_remote_surface_v1_send_set_maximized(resource); | 1824 zwp_remote_surface_v1_send_set_maximized(resource); |
1817 break; | 1825 break; |
1818 case ash::wm::WINDOW_STATE_TYPE_FULLSCREEN: | 1826 case ash::wm::WINDOW_STATE_TYPE_FULLSCREEN: |
1819 state_type = ZWP_REMOTE_SHELL_V1_STATE_TYPE_FULLSCREEN; | 1827 state_type = ZWP_REMOTE_SHELL_V1_STATE_TYPE_FULLSCREEN; |
1820 zwp_remote_surface_v1_send_set_fullscreen(resource); | 1828 zwp_remote_surface_v1_send_set_fullscreen(resource); |
1821 break; | 1829 break; |
1822 case ash::wm::WINDOW_STATE_TYPE_PINNED: | 1830 case ash::wm::WINDOW_STATE_TYPE_PINNED: |
1823 state_type = ZWP_REMOTE_SHELL_V1_STATE_TYPE_PINNED; | 1831 state_type = ZWP_REMOTE_SHELL_V1_STATE_TYPE_PINNED; |
1824 if (wl_resource_get_version(resource) >= 3) | 1832 if (wl_resource_get_version(resource) >= 3) |
1825 zwp_remote_surface_v1_send_set_pinned(resource); | 1833 zwp_remote_surface_v1_send_set_pinned(resource); |
1826 break; | 1834 break; |
1835 case ash::wm::WINDOW_STATE_TYPE_TRUSTED_PINNED: | |
1836 state_type = ZWP_REMOTE_SHELL_V1_STATE_TYPE_TRUSTED_PINNED; | |
1837 if (wl_resource_get_version(resource) >= 3) | |
1838 zwp_remote_surface_v1_send_set_pinned(resource); | |
1839 break; | |
1827 default: | 1840 default: |
1828 break; | 1841 break; |
1829 } | 1842 } |
1830 | 1843 |
1831 if (wl_resource_get_version(resource) >= 7) | 1844 if (wl_resource_get_version(resource) >= 7) |
1832 zwp_remote_surface_v1_send_state_type_changed(resource, state_type); | 1845 zwp_remote_surface_v1_send_state_type_changed(resource, state_type); |
hirono
2016/09/05 23:27:38
Only accelerator keys behave differently for pinni
| |
1833 | 1846 |
1834 wl_client_flush(wl_resource_get_client(resource)); | 1847 wl_client_flush(wl_resource_get_client(resource)); |
1835 } | 1848 } |
1836 | 1849 |
1837 void remote_shell_get_remote_surface(wl_client* client, | 1850 void remote_shell_get_remote_surface(wl_client* client, |
1838 wl_resource* resource, | 1851 wl_resource* resource, |
1839 uint32_t id, | 1852 uint32_t id, |
1840 wl_resource* surface, | 1853 wl_resource* surface, |
1841 uint32_t container) { | 1854 uint32_t container) { |
1842 std::unique_ptr<ShellSurface> shell_surface = | 1855 std::unique_ptr<ShellSurface> shell_surface = |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1889 wl_resource_get_version(resource), id); | 1902 wl_resource_get_version(resource), id); |
1890 SetImplementation(notification_surface_resource, | 1903 SetImplementation(notification_surface_resource, |
1891 ¬ification_surface_implementation, | 1904 ¬ification_surface_implementation, |
1892 std::move(notification_surface)); | 1905 std::move(notification_surface)); |
1893 } | 1906 } |
1894 | 1907 |
1895 const struct zwp_remote_shell_v1_interface remote_shell_implementation = { | 1908 const struct zwp_remote_shell_v1_interface remote_shell_implementation = { |
1896 remote_shell_destroy, remote_shell_get_remote_surface, | 1909 remote_shell_destroy, remote_shell_get_remote_surface, |
1897 remote_shell_get_notification_surface}; | 1910 remote_shell_get_notification_surface}; |
1898 | 1911 |
1899 const uint32_t remote_shell_version = 10; | 1912 const uint32_t remote_shell_version = 11; |
1900 | 1913 |
1901 void bind_remote_shell(wl_client* client, | 1914 void bind_remote_shell(wl_client* client, |
1902 void* data, | 1915 void* data, |
1903 uint32_t version, | 1916 uint32_t version, |
1904 uint32_t id) { | 1917 uint32_t id) { |
1905 wl_resource* resource = | 1918 wl_resource* resource = |
1906 wl_resource_create(client, &zwp_remote_shell_v1_interface, | 1919 wl_resource_create(client, &zwp_remote_shell_v1_interface, |
1907 std::min(version, remote_shell_version), id); | 1920 std::min(version, remote_shell_version), id); |
1908 | 1921 |
1909 SetImplementation(resource, &remote_shell_implementation, | 1922 SetImplementation(resource, &remote_shell_implementation, |
(...skipping 1218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3128 DCHECK(event_loop); | 3141 DCHECK(event_loop); |
3129 wl_event_loop_dispatch(event_loop, timeout.InMilliseconds()); | 3142 wl_event_loop_dispatch(event_loop, timeout.InMilliseconds()); |
3130 } | 3143 } |
3131 | 3144 |
3132 void Server::Flush() { | 3145 void Server::Flush() { |
3133 wl_display_flush_clients(wl_display_.get()); | 3146 wl_display_flush_clients(wl_display_.get()); |
3134 } | 3147 } |
3135 | 3148 |
3136 } // namespace wayland | 3149 } // namespace wayland |
3137 } // namespace exo | 3150 } // namespace exo |
OLD | NEW |