Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(179)

Side by Side Diff: components/exo/wayland/server.cc

Issue 1645043003: exo: Improve window placement. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « components/exo/touch_unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <linux/input.h> 7 #include <linux/input.h>
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 #include <wayland-server-core.h> 10 #include <wayland-server-core.h>
(...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after
631 631
632 void shell_surface_resize(wl_client* client, 632 void shell_surface_resize(wl_client* client,
633 wl_resource* resource, 633 wl_resource* resource,
634 wl_resource* seat_resource, 634 wl_resource* seat_resource,
635 uint32_t serial, 635 uint32_t serial,
636 uint32_t edges) { 636 uint32_t edges) {
637 NOTIMPLEMENTED(); 637 NOTIMPLEMENTED();
638 } 638 }
639 639
640 void shell_surface_set_toplevel(wl_client* client, wl_resource* resource) { 640 void shell_surface_set_toplevel(wl_client* client, wl_resource* resource) {
641 GetUserDataAs<ShellSurface>(resource)->Init(); 641 GetUserDataAs<ShellSurface>(resource)->SetEnabled(true);
642 } 642 }
643 643
644 void shell_surface_set_transient(wl_client* client, 644 void shell_surface_set_transient(wl_client* client,
645 wl_resource* resource, 645 wl_resource* resource,
646 wl_resource* parent_resource, 646 wl_resource* parent_resource,
647 int x, 647 int x,
648 int y, 648 int y,
649 uint32_t flags) { 649 uint32_t flags) {
650 NOTIMPLEMENTED(); 650 NOTIMPLEMENTED();
651 } 651 }
652 652
653 void shell_surface_set_fullscreen(wl_client* client, 653 void shell_surface_set_fullscreen(wl_client* client,
654 wl_resource* resource, 654 wl_resource* resource,
655 uint32_t method, 655 uint32_t method,
656 uint32_t framerate, 656 uint32_t framerate,
657 wl_resource* output_resource) { 657 wl_resource* output_resource) {
658 GetUserDataAs<ShellSurface>(resource)->Init(); 658 GetUserDataAs<ShellSurface>(resource)->SetEnabled(true);
659 GetUserDataAs<ShellSurface>(resource)->SetFullscreen(true); 659 GetUserDataAs<ShellSurface>(resource)->SetFullscreen(true);
660 } 660 }
661 661
662 void shell_surface_set_popup(wl_client* client, 662 void shell_surface_set_popup(wl_client* client,
663 wl_resource* resource, 663 wl_resource* resource,
664 wl_resource* seat_resource, 664 wl_resource* seat_resource,
665 uint32_t serial, 665 uint32_t serial,
666 wl_resource* parent_resource, 666 wl_resource* parent_resource,
667 int32_t x, 667 int32_t x,
668 int32_t y, 668 int32_t y,
669 uint32_t flags) { 669 uint32_t flags) {
670 NOTIMPLEMENTED(); 670 NOTIMPLEMENTED();
671 } 671 }
672 672
673 void shell_surface_set_maximized(wl_client* client, 673 void shell_surface_set_maximized(wl_client* client,
674 wl_resource* resource, 674 wl_resource* resource,
675 wl_resource* output_resource) { 675 wl_resource* output_resource) {
676 GetUserDataAs<ShellSurface>(resource)->Init(); 676 GetUserDataAs<ShellSurface>(resource)->SetEnabled(true);
677 GetUserDataAs<ShellSurface>(resource)->Maximize(); 677 GetUserDataAs<ShellSurface>(resource)->Maximize();
678 } 678 }
679 679
680 void shell_surface_set_title(wl_client* client, 680 void shell_surface_set_title(wl_client* client,
681 wl_resource* resource, 681 wl_resource* resource,
682 const char* title) { 682 const char* title) {
683 GetUserDataAs<ShellSurface>(resource) 683 GetUserDataAs<ShellSurface>(resource)
684 ->SetTitle(base::string16(base::UTF8ToUTF16(title))); 684 ->SetTitle(base::string16(base::UTF8ToUTF16(title)));
685 } 685 }
686 686
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
718 return; 718 return;
719 } 719 }
720 720
721 wl_resource* shell_surface_resource = 721 wl_resource* shell_surface_resource =
722 wl_resource_create(client, &wl_shell_surface_interface, 1, id); 722 wl_resource_create(client, &wl_shell_surface_interface, 1, id);
723 if (!shell_surface_resource) { 723 if (!shell_surface_resource) {
724 wl_resource_post_no_memory(resource); 724 wl_resource_post_no_memory(resource);
725 return; 725 return;
726 } 726 }
727 727
728 // Shell surfaces are initially disabled and needs to be explicitly mapped
729 // before they are enabled and can become visible.
730 shell_surface->SetEnabled(false);
731
728 shell_surface->set_surface_destroyed_callback(base::Bind( 732 shell_surface->set_surface_destroyed_callback(base::Bind(
729 &wl_resource_destroy, base::Unretained(shell_surface_resource))); 733 &wl_resource_destroy, base::Unretained(shell_surface_resource)));
730 734
731 shell_surface->set_configure_callback( 735 shell_surface->set_configure_callback(
732 base::Bind(&HandleShellSurfaceConfigureCallback, 736 base::Bind(&HandleShellSurfaceConfigureCallback,
733 base::Unretained(shell_surface_resource))); 737 base::Unretained(shell_surface_resource)));
734 738
735 SetImplementation(shell_surface_resource, &shell_surface_implementation, 739 SetImplementation(shell_surface_resource, &shell_surface_implementation,
736 std::move(shell_surface)); 740 std::move(shell_surface));
737 } 741 }
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
945 return; 949 return;
946 } 950 }
947 951
948 wl_resource* xdg_surface_resource = 952 wl_resource* xdg_surface_resource =
949 wl_resource_create(client, &xdg_surface_interface, 1, id); 953 wl_resource_create(client, &xdg_surface_interface, 1, id);
950 if (!xdg_surface_resource) { 954 if (!xdg_surface_resource) {
951 wl_resource_post_no_memory(resource); 955 wl_resource_post_no_memory(resource);
952 return; 956 return;
953 } 957 }
954 958
955 // An XdgSurface is a toplevel shell surface.
956 shell_surface->Init();
957
958 shell_surface->set_close_callback(base::Bind( 959 shell_surface->set_close_callback(base::Bind(
959 &xdg_surface_send_close, base::Unretained(xdg_surface_resource))); 960 &xdg_surface_send_close, base::Unretained(xdg_surface_resource)));
960 961
961 shell_surface->set_configure_callback( 962 shell_surface->set_configure_callback(
962 base::Bind(&HandleXdgSurfaceConfigureCallback, 963 base::Bind(&HandleXdgSurfaceConfigureCallback,
963 base::Unretained(xdg_surface_resource))); 964 base::Unretained(xdg_surface_resource)));
964 965
965 SetImplementation(xdg_surface_resource, &xdg_surface_implementation, 966 SetImplementation(xdg_surface_resource, &xdg_surface_implementation,
966 std::move(shell_surface)); 967 std::move(shell_surface));
967 } 968 }
(...skipping 571 matching lines...) Expand 10 before | Expand all | Expand 10 after
1539 DCHECK(event_loop); 1540 DCHECK(event_loop);
1540 wl_event_loop_dispatch(event_loop, timeout.InMilliseconds()); 1541 wl_event_loop_dispatch(event_loop, timeout.InMilliseconds());
1541 } 1542 }
1542 1543
1543 void Server::Flush() { 1544 void Server::Flush() {
1544 wl_display_flush_clients(wl_display_.get()); 1545 wl_display_flush_clients(wl_display_.get());
1545 } 1546 }
1546 1547
1547 } // namespace wayland 1548 } // namespace wayland
1548 } // namespace exo 1549 } // namespace exo
OLDNEW
« no previous file with comments | « components/exo/touch_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698