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

Side by Side Diff: components/exo/shell_surface.cc

Issue 1492803004: exo: Add SetGeometry function to ShellSurface class. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@exosphere-xdg-shell
Patch Set: implement xdg_surface_set_window_geometry Created 5 years 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/shell_surface.h ('k') | components/exo/shell_surface_unittest.cc » ('j') | 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/shell_surface.h" 5 #include "components/exo/shell_surface.h"
6 6
7 #include "ash/shell.h" 7 #include "ash/shell.h"
8 #include "ash/shell_window_ids.h" 8 #include "ash/shell_window_ids.h"
9 #include "ash/wm/window_state.h" 9 #include "ash/wm/window_state.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 173
174 void ShellSurface::Move() { 174 void ShellSurface::Move() {
175 TRACE_EVENT0("exo", "ShellSurface::Move"); 175 TRACE_EVENT0("exo", "ShellSurface::Move");
176 176
177 if (widget_) { 177 if (widget_) {
178 widget_->RunMoveLoop(gfx::Vector2d(), views::Widget::MOVE_LOOP_SOURCE_MOUSE, 178 widget_->RunMoveLoop(gfx::Vector2d(), views::Widget::MOVE_LOOP_SOURCE_MOUSE,
179 views::Widget::MOVE_LOOP_ESCAPE_BEHAVIOR_DONT_HIDE); 179 views::Widget::MOVE_LOOP_ESCAPE_BEHAVIOR_DONT_HIDE);
180 } 180 }
181 } 181 }
182 182
183 void ShellSurface::SetGeometry(const gfx::Rect& geometry) {
184 TRACE_EVENT1("exo", "ShellSurface::SetGeometry", "geometry",
185 geometry.ToString());
186
187 if (geometry.IsEmpty()) {
188 DLOG(WARNING) << "Surface geometry must be non-empty";
189 return;
190 }
191
192 geometry_ = geometry;
193 }
194
183 scoped_refptr<base::trace_event::TracedValue> ShellSurface::AsTracedValue() 195 scoped_refptr<base::trace_event::TracedValue> ShellSurface::AsTracedValue()
184 const { 196 const {
185 scoped_refptr<base::trace_event::TracedValue> value = 197 scoped_refptr<base::trace_event::TracedValue> value =
186 new base::trace_event::TracedValue; 198 new base::trace_event::TracedValue;
187 value->SetString("title", base::UTF16ToUTF8(title_)); 199 value->SetString("title", base::UTF16ToUTF8(title_));
188 value->SetString("application_id", application_id_); 200 value->SetString("application_id", application_id_);
189 return value; 201 return value;
190 } 202 }
191 203
192 //////////////////////////////////////////////////////////////////////////////// 204 ////////////////////////////////////////////////////////////////////////////////
193 // SurfaceDelegate overrides: 205 // SurfaceDelegate overrides:
194 206
195 void ShellSurface::OnSurfaceCommit() { 207 void ShellSurface::OnSurfaceCommit() {
196 surface_->CommitSurfaceHierarchy(); 208 surface_->CommitSurfaceHierarchy();
197 if (widget_) { 209 if (widget_) {
198 // Update surface bounds and widget size. 210 // Update surface bounds and widget size.
199 gfx::Point origin; 211 gfx::Point origin;
200 views::View::ConvertPointToWidget(this, &origin); 212 views::View::ConvertPointToWidget(this, &origin);
201 surface_->SetBounds(gfx::Rect(origin, surface_->layer()->size())); 213 surface_->SetBounds(gfx::Rect(origin - geometry_.OffsetFromOrigin(),
214 surface_->layer()->size()));
202 widget_->SetSize(widget_->non_client_view()->GetPreferredSize()); 215 widget_->SetSize(widget_->non_client_view()->GetPreferredSize());
203 216
204 // Show widget if not already visible. 217 // Show widget if not already visible.
205 if (!widget_->IsClosed() && !widget_->IsVisible()) 218 if (!widget_->IsClosed() && !widget_->IsVisible())
206 widget_->Show(); 219 widget_->Show();
207 } 220 }
208 } 221 }
209 222
210 bool ShellSurface::IsSurfaceSynchronized() const { 223 bool ShellSurface::IsSurfaceSynchronized() const {
211 // A shell surface is always desynchronized. 224 // A shell surface is always desynchronized.
(...skipping 29 matching lines...) Expand all
241 254
242 views::NonClientFrameView* ShellSurface::CreateNonClientFrameView( 255 views::NonClientFrameView* ShellSurface::CreateNonClientFrameView(
243 views::Widget* widget) { 256 views::Widget* widget) {
244 return new CustomFrameView(widget); 257 return new CustomFrameView(widget);
245 } 258 }
246 259
247 //////////////////////////////////////////////////////////////////////////////// 260 ////////////////////////////////////////////////////////////////////////////////
248 // views::Views overrides: 261 // views::Views overrides:
249 262
250 gfx::Size ShellSurface::GetPreferredSize() const { 263 gfx::Size ShellSurface::GetPreferredSize() const {
264 if (!geometry_.IsEmpty())
265 return geometry_.size();
266
251 return surface_ ? surface_->GetPreferredSize() : gfx::Size(); 267 return surface_ ? surface_->GetPreferredSize() : gfx::Size();
252 } 268 }
253 269
254 } // namespace exo 270 } // namespace exo
OLDNEW
« no previous file with comments | « components/exo/shell_surface.h ('k') | components/exo/shell_surface_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698