// Copyright 2016 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. module ui.mojom; import "ui/gfx/geometry/mojo/geometry.mojom"; // Contains state of a single window. struct WindowData { // Unique identifier of the parent. If the client can not see the parent an // id of 0 is supplied. uint32 parent_id; // Unique identifier of the window. uint32 window_id; // Id of the transient parent, 0 if there isn't one. uint32 transient_parent_id; gfx.mojom.Rect bounds; // Arbitrary key/value pairs. The interpretation of these is left to the // client. See SetWindowProperty() for more information. map> properties; // True if this window is visible. The window may not be drawn on screen (see // OnWindowParentDrawnStateChanged() for details). bool visible; }; // The result of an input event sent to a client app. enum EventResult { HANDLED, UNHANDLED, }; enum EventTargetingPolicy { // The target is a valid target for events, but none of its descendants are // considered. TARGET_ONLY, // The target and its descendants are possible targets. This is the default. TARGET_AND_DESCENDANTS, // The target is not a valid target, but its descendants are possible targets. DESCENDANTS_ONLY, // Neither the target nor its descendants are valid targets. NONE }; // A bitfield of what drag operations are possible. const uint32 kDropEffectNone = 0; const uint32 kDropEffectMove = 1; const uint32 kDropEffectCopy = 2; const uint32 kDropEffectLink = 4; // When this flag is set in a call to Embed(), the embedder (i.e. the client // that is making the call to Embed()) will receive events that are targeted to // the embedded client. The embedded client will not receive any input events // from the window server. However, the embedder can choose to dispatch events // to the embedded client through other mechanism. // TODO(sad): Provide an API in mus for the embedder to dispatch events to the // embedded client. https://crbug.com/621085 const uint32 kEmbedFlagEmbedderInterceptsEvents = 0x01; // When passed to Embed() the embedded client can not change the visibility of // the window, only the embedder can. Requests by the embedded client to change // the visibility fail. This flag only effects the window at the embed point, // the embedded client can always change the visibility of any windows the // embedded client creates. const uint32 kEmbedFlagEmbedderControlsVisibility = 0x02;