| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "views/window/window.h" | 5 #include "views/window/window.h" |
| 6 | 6 |
| 7 #include "base/string_util.h" | 7 #include "base/string_util.h" |
| 8 #include "base/utf_string_conversions.h" | 8 #include "base/utf_string_conversions.h" |
| 9 #include "third_party/skia/include/core/SkBitmap.h" | 9 #include "third_party/skia/include/core/SkBitmap.h" |
| 10 #include "ui/base/l10n/l10n_font_util.h" | 10 #include "ui/base/l10n/l10n_font_util.h" |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 105 | 105 |
| 106 gfx::Rect Window::GetNormalBounds() const { | 106 gfx::Rect Window::GetNormalBounds() const { |
| 107 return native_window_->GetRestoredBounds(); | 107 return native_window_->GetRestoredBounds(); |
| 108 } | 108 } |
| 109 | 109 |
| 110 void Window::SetWindowBounds(const gfx::Rect& bounds, | 110 void Window::SetWindowBounds(const gfx::Rect& bounds, |
| 111 gfx::NativeWindow other_window) { | 111 gfx::NativeWindow other_window) { |
| 112 native_window_->SetWindowBounds(bounds, other_window); | 112 native_window_->SetWindowBounds(bounds, other_window); |
| 113 } | 113 } |
| 114 | 114 |
| 115 void Window::Show() { |
| 116 native_window_->ShowNativeWindow( |
| 117 saved_maximized_state_ ? NativeWindow::SHOW_MAXIMIZED |
| 118 : NativeWindow::SHOW_RESTORED); |
| 119 // |saved_maximized_state_| only applies the first time the window is shown. |
| 120 // If we don't reset the value the window will be shown maximized every time |
| 121 // it is subsequently shown after being hidden. |
| 122 saved_maximized_state_ = false; |
| 123 } |
| 124 |
| 115 void Window::ShowInactive() { | 125 void Window::ShowInactive() { |
| 116 native_window_->ShowNativeWindow(NativeWindow::SHOW_INACTIVE); | 126 native_window_->ShowNativeWindow(NativeWindow::SHOW_INACTIVE); |
| 117 } | 127 } |
| 118 | 128 |
| 129 void Window::HideWindow() { |
| 130 native_window_->HideWindow(); |
| 131 } |
| 132 |
| 119 void Window::DisableInactiveRendering() { | 133 void Window::DisableInactiveRendering() { |
| 120 disable_inactive_rendering_ = true; | 134 disable_inactive_rendering_ = true; |
| 121 non_client_view_->DisableInactiveRendering(disable_inactive_rendering_); | 135 non_client_view_->DisableInactiveRendering(disable_inactive_rendering_); |
| 122 } | 136 } |
| 123 | 137 |
| 138 void Window::Activate() { |
| 139 native_window_->Activate(); |
| 140 } |
| 141 |
| 142 void Window::Deactivate() { |
| 143 native_window_->Deactivate(); |
| 144 } |
| 145 |
| 146 void Window::Close() { |
| 147 if (window_closed_) { |
| 148 // It appears we can hit this code path if you close a modal dialog then |
| 149 // close the last browser before the destructor is hit, which triggers |
| 150 // invoking Close again. |
| 151 return; |
| 152 } |
| 153 |
| 154 if (non_client_view_->CanClose()) { |
| 155 SaveWindowPosition(); |
| 156 Widget::Close(); |
| 157 window_closed_ = true; |
| 158 } |
| 159 } |
| 160 |
| 161 void Window::Maximize() { |
| 162 native_window_->Maximize(); |
| 163 } |
| 164 |
| 165 void Window::Minimize() { |
| 166 native_window_->Minimize(); |
| 167 } |
| 168 |
| 169 void Window::Restore() { |
| 170 native_window_->Restore(); |
| 171 } |
| 172 |
| 173 bool Window::IsActive() const { |
| 174 return native_window_->IsActive(); |
| 175 } |
| 176 |
| 177 bool Window::IsVisible() const { |
| 178 return native_window_->IsVisible(); |
| 179 } |
| 180 |
| 181 bool Window::IsMaximized() const { |
| 182 return native_window_->IsMaximized(); |
| 183 } |
| 184 |
| 185 bool Window::IsMinimized() const { |
| 186 return native_window_->IsMinimized(); |
| 187 } |
| 188 |
| 124 void Window::SetFullscreen(bool fullscreen) { | 189 void Window::SetFullscreen(bool fullscreen) { |
| 125 native_window_->SetFullscreen(fullscreen); | 190 native_window_->SetFullscreen(fullscreen); |
| 126 } | 191 } |
| 127 | 192 |
| 128 bool Window::IsFullscreen() const { | 193 bool Window::IsFullscreen() const { |
| 129 return native_window_->IsFullscreen(); | 194 return native_window_->IsFullscreen(); |
| 130 } | 195 } |
| 131 | 196 |
| 132 void Window::SetUseDragFrame(bool use_drag_frame) { | 197 void Window::SetUseDragFrame(bool use_drag_frame) { |
| 133 native_window_->SetUseDragFrame(use_drag_frame); | 198 native_window_->SetUseDragFrame(use_drag_frame); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 153 base::i18n::AdjustStringForLocaleDirection(&window_title); | 218 base::i18n::AdjustStringForLocaleDirection(&window_title); |
| 154 native_window_->SetWindowTitle(UTF16ToWide(window_title)); | 219 native_window_->SetWindowTitle(UTF16ToWide(window_title)); |
| 155 } | 220 } |
| 156 | 221 |
| 157 void Window::UpdateWindowIcon() { | 222 void Window::UpdateWindowIcon() { |
| 158 non_client_view_->UpdateWindowIcon(); | 223 non_client_view_->UpdateWindowIcon(); |
| 159 native_window_->SetWindowIcons(window_delegate_->GetWindowIcon(), | 224 native_window_->SetWindowIcons(window_delegate_->GetWindowIcon(), |
| 160 window_delegate_->GetWindowAppIcon()); | 225 window_delegate_->GetWindowAppIcon()); |
| 161 } | 226 } |
| 162 | 227 |
| 228 void Window::SetIsAlwaysOnTop(bool always_on_top) { |
| 229 native_window_->SetAlwaysOnTop(always_on_top); |
| 230 } |
| 231 |
| 163 NonClientFrameView* Window::CreateFrameViewForWindow() { | 232 NonClientFrameView* Window::CreateFrameViewForWindow() { |
| 164 NonClientFrameView* frame_view = native_window_->CreateFrameViewForWindow(); | 233 NonClientFrameView* frame_view = native_window_->CreateFrameViewForWindow(); |
| 165 return frame_view ? frame_view : new CustomFrameView(this); | 234 return frame_view ? frame_view : new CustomFrameView(this); |
| 166 } | 235 } |
| 167 | 236 |
| 168 void Window::UpdateFrameAfterFrameChange() { | 237 void Window::UpdateFrameAfterFrameChange() { |
| 169 native_window_->UpdateFrameAfterFrameChange(); | 238 native_window_->UpdateFrameAfterFrameChange(); |
| 170 } | 239 } |
| 171 | 240 |
| 241 gfx::NativeWindow Window::GetNativeWindow() const { |
| 242 return native_window_->GetNativeWindow(); |
| 243 } |
| 244 |
| 172 bool Window::ShouldUseNativeFrame() const { | 245 bool Window::ShouldUseNativeFrame() const { |
| 173 if (frame_type_ != FRAME_TYPE_DEFAULT) | 246 if (frame_type_ != FRAME_TYPE_DEFAULT) |
| 174 return frame_type_ == FRAME_TYPE_FORCE_NATIVE; | 247 return frame_type_ == FRAME_TYPE_FORCE_NATIVE; |
| 175 return native_window_->ShouldUseNativeFrame(); | 248 return native_window_->ShouldUseNativeFrame(); |
| 176 } | 249 } |
| 177 | 250 |
| 178 void Window::DebugToggleFrameType() { | 251 void Window::DebugToggleFrameType() { |
| 179 if (frame_type_ == FRAME_TYPE_DEFAULT) { | 252 if (frame_type_ == FRAME_TYPE_DEFAULT) { |
| 180 frame_type_ = ShouldUseNativeFrame() ? FRAME_TYPE_FORCE_CUSTOM : | 253 frame_type_ = ShouldUseNativeFrame() ? FRAME_TYPE_FORCE_CUSTOM : |
| 181 FRAME_TYPE_FORCE_NATIVE; | 254 FRAME_TYPE_FORCE_NATIVE; |
| 182 } else { | 255 } else { |
| 183 frame_type_ = frame_type_ == FRAME_TYPE_FORCE_CUSTOM ? | 256 frame_type_ = frame_type_ == FRAME_TYPE_FORCE_CUSTOM ? |
| 184 FRAME_TYPE_FORCE_NATIVE : FRAME_TYPE_FORCE_CUSTOM; | 257 FRAME_TYPE_FORCE_NATIVE : FRAME_TYPE_FORCE_CUSTOM; |
| 185 } | 258 } |
| 186 FrameTypeChanged(); | 259 FrameTypeChanged(); |
| 187 } | 260 } |
| 188 | 261 |
| 189 void Window::FrameTypeChanged() { | 262 void Window::FrameTypeChanged() { |
| 190 native_window_->FrameTypeChanged(); | 263 native_window_->FrameTypeChanged(); |
| 191 } | 264 } |
| 192 | 265 |
| 193 //////////////////////////////////////////////////////////////////////////////// | 266 //////////////////////////////////////////////////////////////////////////////// |
| 194 // Window, Widget overrides: | |
| 195 | |
| 196 void Window::Show() { | |
| 197 native_window_->ShowNativeWindow( | |
| 198 saved_maximized_state_ ? NativeWindow::SHOW_MAXIMIZED | |
| 199 : NativeWindow::SHOW_RESTORED); | |
| 200 // |saved_maximized_state_| only applies the first time the window is shown. | |
| 201 // If we don't reset the value the window will be shown maximized every time | |
| 202 // it is subsequently shown after being hidden. | |
| 203 saved_maximized_state_ = false; | |
| 204 } | |
| 205 | |
| 206 void Window::Close() { | |
| 207 if (window_closed_) { | |
| 208 // It appears we can hit this code path if you close a modal dialog then | |
| 209 // close the last browser before the destructor is hit, which triggers | |
| 210 // invoking Close again. | |
| 211 return; | |
| 212 } | |
| 213 | |
| 214 if (non_client_view_->CanClose()) { | |
| 215 SaveWindowPosition(); | |
| 216 Widget::Close(); | |
| 217 window_closed_ = true; | |
| 218 } | |
| 219 } | |
| 220 | |
| 221 //////////////////////////////////////////////////////////////////////////////// | |
| 222 // Window, internal::NativeWindowDelegate implementation: | 267 // Window, internal::NativeWindowDelegate implementation: |
| 223 | 268 |
| 224 bool Window::CanActivate() const { | 269 bool Window::CanActivate() const { |
| 225 return window_delegate_->CanActivate(); | 270 return window_delegate_->CanActivate(); |
| 226 } | 271 } |
| 227 | 272 |
| 228 bool Window::IsInactiveRenderingDisabled() const { | 273 bool Window::IsInactiveRenderingDisabled() const { |
| 229 return disable_inactive_rendering_; | 274 return disable_inactive_rendering_; |
| 230 } | 275 } |
| 231 | 276 |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 365 if (!window_delegate_) | 410 if (!window_delegate_) |
| 366 return; | 411 return; |
| 367 | 412 |
| 368 bool maximized; | 413 bool maximized; |
| 369 gfx::Rect bounds; | 414 gfx::Rect bounds; |
| 370 native_window_->GetWindowBoundsAndMaximizedState(&bounds, &maximized); | 415 native_window_->GetWindowBoundsAndMaximizedState(&bounds, &maximized); |
| 371 window_delegate_->SaveWindowPlacement(bounds, maximized); | 416 window_delegate_->SaveWindowPlacement(bounds, maximized); |
| 372 } | 417 } |
| 373 | 418 |
| 374 } // namespace views | 419 } // namespace views |
| OLD | NEW |