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

Side by Side Diff: win8/metro_driver/chrome_app_view_ash.cc

Issue 27058004: Use WindowActivated message instead of VisibilityChanged message to determine that Ash is the activ… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge up to r229418 Created 7 years, 2 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 | « win8/metro_driver/chrome_app_view_ash.h ('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 (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 "win8/metro_driver/stdafx.h" 5 #include "win8/metro_driver/stdafx.h"
6 #include "win8/metro_driver/chrome_app_view_ash.h" 6 #include "win8/metro_driver/chrome_app_view_ash.h"
7 7
8 #include <corewindow.h> 8 #include <corewindow.h>
9 #include <shellapi.h> 9 #include <shellapi.h>
10 #include <windows.foundation.h> 10 #include <windows.foundation.h>
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 typedef winfoundtn::ITypedEventHandler< 43 typedef winfoundtn::ITypedEventHandler<
44 winui::Core::CoreDispatcher*, 44 winui::Core::CoreDispatcher*,
45 winui::Core::AcceleratorKeyEventArgs*> AcceleratorKeyEventHandler; 45 winui::Core::AcceleratorKeyEventArgs*> AcceleratorKeyEventHandler;
46 46
47 typedef winfoundtn::ITypedEventHandler< 47 typedef winfoundtn::ITypedEventHandler<
48 winui::Core::CoreWindow*, 48 winui::Core::CoreWindow*,
49 winui::Core::CharacterReceivedEventArgs*> CharEventHandler; 49 winui::Core::CharacterReceivedEventArgs*> CharEventHandler;
50 50
51 typedef winfoundtn::ITypedEventHandler< 51 typedef winfoundtn::ITypedEventHandler<
52 winui::Core::CoreWindow*, 52 winui::Core::CoreWindow*,
53 winui::Core::VisibilityChangedEventArgs*> VisibilityChangedHandler;
54
55 typedef winfoundtn::ITypedEventHandler<
56 winui::Core::CoreWindow*,
57 winui::Core::WindowActivatedEventArgs*> WindowActivatedHandler; 53 winui::Core::WindowActivatedEventArgs*> WindowActivatedHandler;
58 54
59 typedef winfoundtn::ITypedEventHandler< 55 typedef winfoundtn::ITypedEventHandler<
60 winui::Core::CoreWindow*, 56 winui::Core::CoreWindow*,
61 winui::Core::WindowSizeChangedEventArgs*> SizeChangedHandler; 57 winui::Core::WindowSizeChangedEventArgs*> SizeChangedHandler;
62 58
63 // This function is exported by chrome.exe. 59 // This function is exported by chrome.exe.
64 typedef int (__cdecl *BreakpadExceptionHandler)(EXCEPTION_POINTERS* info); 60 typedef int (__cdecl *BreakpadExceptionHandler)(EXCEPTION_POINTERS* info);
65 61
66 // Global information used across the metro driver. 62 // Global information used across the metro driver.
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 hr = window_->add_PointerWheelChanged(mswr::Callback<PointerEventHandler>( 411 hr = window_->add_PointerWheelChanged(mswr::Callback<PointerEventHandler>(
416 this, &ChromeAppViewAsh::OnWheel).Get(), 412 this, &ChromeAppViewAsh::OnWheel).Get(),
417 &wheel_token_); 413 &wheel_token_);
418 CheckHR(hr); 414 CheckHR(hr);
419 415
420 hr = window_->add_CharacterReceived(mswr::Callback<CharEventHandler>( 416 hr = window_->add_CharacterReceived(mswr::Callback<CharEventHandler>(
421 this, &ChromeAppViewAsh::OnCharacterReceived).Get(), 417 this, &ChromeAppViewAsh::OnCharacterReceived).Get(),
422 &character_received_token_); 418 &character_received_token_);
423 CheckHR(hr); 419 CheckHR(hr);
424 420
425 hr = window_->add_VisibilityChanged(mswr::Callback<VisibilityChangedHandler>(
426 this, &ChromeAppViewAsh::OnVisibilityChanged).Get(),
427 &visibility_changed_token_);
428 CheckHR(hr);
429
430 hr = window_->add_Activated(mswr::Callback<WindowActivatedHandler>( 421 hr = window_->add_Activated(mswr::Callback<WindowActivatedHandler>(
431 this, &ChromeAppViewAsh::OnWindowActivated).Get(), 422 this, &ChromeAppViewAsh::OnWindowActivated).Get(),
432 &window_activated_token_); 423 &window_activated_token_);
433 CheckHR(hr); 424 CheckHR(hr);
434 425
435 // By initializing the direct 3D swap chain with the corewindow 426 // By initializing the direct 3D swap chain with the corewindow
436 // we can now directly blit to it from the browser process. 427 // we can now directly blit to it from the browser process.
437 direct3d_helper_.Initialize(window); 428 direct3d_helper_.Initialize(window);
438 DVLOG(1) << "Initialized Direct3D."; 429 DVLOG(1) << "Initialized Direct3D.";
439 return S_OK; 430 return S_OK;
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after
873 if (FAILED(hr)) 864 if (FAILED(hr))
874 return hr; 865 return hr;
875 866
876 ui_channel_->Send(new MetroViewerHostMsg_Character(char_code, 867 ui_channel_->Send(new MetroViewerHostMsg_Character(char_code,
877 status.RepeatCount, 868 status.RepeatCount,
878 status.ScanCode, 869 status.ScanCode,
879 GetKeyboardEventFlags())); 870 GetKeyboardEventFlags()));
880 return S_OK; 871 return S_OK;
881 } 872 }
882 873
883 HRESULT ChromeAppViewAsh::OnVisibilityChanged(
884 winui::Core::ICoreWindow* sender,
885 winui::Core::IVisibilityChangedEventArgs* args) {
886 boolean visible = false;
887 HRESULT hr = args->get_Visible(&visible);
888 if (FAILED(hr))
889 return hr;
890
891 ui_channel_->Send(new MetroViewerHostMsg_VisibilityChanged(!!visible));
892 return S_OK;
893 }
894
895 HRESULT ChromeAppViewAsh::OnWindowActivated( 874 HRESULT ChromeAppViewAsh::OnWindowActivated(
896 winui::Core::ICoreWindow* sender, 875 winui::Core::ICoreWindow* sender,
897 winui::Core::IWindowActivatedEventArgs* args) { 876 winui::Core::IWindowActivatedEventArgs* args) {
898 winui::Core::CoreWindowActivationState state; 877 winui::Core::CoreWindowActivationState state;
899 HRESULT hr = args->get_WindowActivationState(&state); 878 HRESULT hr = args->get_WindowActivationState(&state);
900 if (FAILED(hr)) 879 if (FAILED(hr))
901 return hr; 880 return hr;
881
882 // Treat both full activation (Ash was reopened from the Start Screen or from
883 // any other Metro entry point in Windows) and pointer activation (user
884 // clicked back in Ash after using another app on another monitor) the same.
885 if (state == winui::Core::CoreWindowActivationState_CodeActivated ||
886 state == winui::Core::CoreWindowActivationState_PointerActivated) {
887 ui_channel_->Send(new MetroViewerHostMsg_WindowActivated());
888 }
902 return S_OK; 889 return S_OK;
903 } 890 }
904 891
905 HRESULT ChromeAppViewAsh::HandleSearchRequest( 892 HRESULT ChromeAppViewAsh::HandleSearchRequest(
906 winapp::Activation::IActivatedEventArgs* args) { 893 winapp::Activation::IActivatedEventArgs* args) {
907 mswr::ComPtr<winapp::Activation::ISearchActivatedEventArgs> search_args; 894 mswr::ComPtr<winapp::Activation::ISearchActivatedEventArgs> search_args;
908 CheckHR(args->QueryInterface( 895 CheckHR(args->QueryInterface(
909 winapp::Activation::IID_ISearchActivatedEventArgs, &search_args)); 896 winapp::Activation::IID_ISearchActivatedEventArgs, &search_args));
910 897
911 if (!ui_channel_) { 898 if (!ui_channel_) {
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
989 mswr::ComPtr<winapp::Core::ICoreApplicationExit> app_exit; 976 mswr::ComPtr<winapp::Core::ICoreApplicationExit> app_exit;
990 CheckHR(core_app.As(&app_exit)); 977 CheckHR(core_app.As(&app_exit));
991 globals.app_exit = app_exit.Detach(); 978 globals.app_exit = app_exit.Detach();
992 } 979 }
993 980
994 IFACEMETHODIMP 981 IFACEMETHODIMP
995 ChromeAppViewFactory::CreateView(winapp::Core::IFrameworkView** view) { 982 ChromeAppViewFactory::CreateView(winapp::Core::IFrameworkView** view) {
996 *view = mswr::Make<ChromeAppViewAsh>().Detach(); 983 *view = mswr::Make<ChromeAppViewAsh>().Detach();
997 return (*view) ? S_OK : E_OUTOFMEMORY; 984 return (*view) ? S_OK : E_OUTOFMEMORY;
998 } 985 }
OLDNEW
« no previous file with comments | « win8/metro_driver/chrome_app_view_ash.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698