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

Side by Side Diff: chrome/browser/ui/views/panels/panel_view.cc

Issue 196603003: Reland r256396 Add views implementation for AXTreeSource. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | ui/accessibility/ax_tree_source.h » ('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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/ui/views/panels/panel_view.h" 5 #include "chrome/browser/ui/views/panels/panel_view.h"
6 6
7 #include <map> 7 #include <map>
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 #if defined(OS_WIN) 304 #if defined(OS_WIN)
305 ui::win::SetAppIdForWindow( 305 ui::win::SetAppIdForWindow(
306 ShellIntegration::GetAppModelIdForProfile( 306 ShellIntegration::GetAppModelIdForProfile(
307 base::UTF8ToWide(panel->app_name()), panel->profile()->GetPath()), 307 base::UTF8ToWide(panel->app_name()), panel->profile()->GetPath()),
308 views::HWNDForWidget(window_)); 308 views::HWNDForWidget(window_));
309 ui::win::PreventWindowFromPinning(views::HWNDForWidget(window_)); 309 ui::win::PreventWindowFromPinning(views::HWNDForWidget(window_));
310 #endif 310 #endif
311 } 311 }
312 312
313 PanelView::~PanelView() { 313 PanelView::~PanelView() {
314 if (window_)
315 window_->RemoveObserver(this);
314 } 316 }
315 317
316 void PanelView::ShowPanel() { 318 void PanelView::ShowPanel() {
317 ShowPanelInactive(); 319 ShowPanelInactive();
318 ActivatePanel(); 320 ActivatePanel();
319 } 321 }
320 322
321 void PanelView::ShowPanelInactive() { 323 void PanelView::ShowPanelInactive() {
322 if (window_->IsVisible()) 324 if (window_->IsVisible())
323 return; 325 return;
(...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after
772 else 774 else
773 return *app_icon.ToImageSkia(); 775 return *app_icon.ToImageSkia();
774 } 776 }
775 777
776 gfx::ImageSkia PanelView::GetWindowIcon() { 778 gfx::ImageSkia PanelView::GetWindowIcon() {
777 gfx::Image icon = panel_->GetCurrentPageIcon(); 779 gfx::Image icon = panel_->GetCurrentPageIcon();
778 return icon.IsEmpty() ? gfx::ImageSkia() : *icon.ToImageSkia(); 780 return icon.IsEmpty() ? gfx::ImageSkia() : *icon.ToImageSkia();
779 } 781 }
780 782
781 void PanelView::WindowClosing() { 783 void PanelView::WindowClosing() {
784
782 // When closing a panel via window.close, API or the close button, 785 // When closing a panel via window.close, API or the close button,
783 // ClosePanel() is called first, destroying the native |window_| 786 // ClosePanel() is called first, destroying the native |window_|
784 // which results in this method being called. ClosePanel() sets 787 // which results in this method being called. ClosePanel() sets
785 // |window_closed_| to NULL. 788 // |window_closed_| to NULL.
786 // If we still have a |window_closed_| here, the close was triggered by the 789 // If we still have a |window_closed_| here, the close was triggered by the
787 // OS, (e.g. clicking on taskbar menu), which destroys the native |window_| 790 // OS, (e.g. clicking on taskbar menu), which destroys the native |window_|
788 // without invoking ClosePanel() beforehand. 791 // without invoking ClosePanel() beforehand.
789 if (!window_closed_) { 792 if (!window_closed_) {
790 panel_->OnWindowClosing(); 793 panel_->OnWindowClosing();
791 ClosePanel(); 794 ClosePanel();
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
941 944
942 const std::map<ui::Accelerator, int>& accelerator_table = 945 const std::map<ui::Accelerator, int>& accelerator_table =
943 GetAcceleratorTable(); 946 GetAcceleratorTable();
944 std::map<ui::Accelerator, int>::const_iterator iter = 947 std::map<ui::Accelerator, int>::const_iterator iter =
945 accelerator_table.find(accelerator); 948 accelerator_table.find(accelerator);
946 DCHECK(iter != accelerator_table.end()); 949 DCHECK(iter != accelerator_table.end());
947 return panel_->ExecuteCommandIfEnabled(iter->second); 950 return panel_->ExecuteCommandIfEnabled(iter->second);
948 } 951 }
949 952
950 void PanelView::OnWidgetDestroying(views::Widget* widget) { 953 void PanelView::OnWidgetDestroying(views::Widget* widget) {
951 window_ = NULL; 954 if (window_) {
955 window_->RemoveObserver(this);
956 window_ = NULL;
957 }
952 } 958 }
953 959
954 void PanelView::OnWidgetActivationChanged(views::Widget* widget, bool active) { 960 void PanelView::OnWidgetActivationChanged(views::Widget* widget, bool active) {
955 #if defined(OS_WIN) 961 #if defined(OS_WIN)
956 // WM_NCACTIVATED could be sent when an active window is being destroyed on 962 // WM_NCACTIVATED could be sent when an active window is being destroyed on
957 // Windows. We need to guard against this. 963 // Windows. We need to guard against this.
958 if (window_closed_) 964 if (window_closed_)
959 return; 965 return;
960 966
961 bool focused = active; 967 bool focused = active;
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
1126 // SWP_FRAMECHANGED flag must be called in order for the cached window data 1132 // SWP_FRAMECHANGED flag must be called in order for the cached window data
1127 // to be updated properly. 1133 // to be updated properly.
1128 // http://msdn.microsoft.com/en-us/library/windows/desktop/ms633591(v=vs.85).a spx 1134 // http://msdn.microsoft.com/en-us/library/windows/desktop/ms633591(v=vs.85).a spx
1129 if (update_frame) { 1135 if (update_frame) {
1130 ::SetWindowPos(native_window, NULL, 0, 0, 0, 0, 1136 ::SetWindowPos(native_window, NULL, 0, 0, 0, 0,
1131 SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE | 1137 SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE |
1132 SWP_NOZORDER | SWP_NOACTIVATE); 1138 SWP_NOZORDER | SWP_NOACTIVATE);
1133 } 1139 }
1134 } 1140 }
1135 #endif 1141 #endif
OLDNEW
« no previous file with comments | « no previous file | ui/accessibility/ax_tree_source.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698