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

Side by Side Diff: chrome/browser/views/status_icons/status_tray_win.cc

Issue 3189003: Added support for context menus to status icons. (Closed)
Patch Set: Final version. Created 10 years, 4 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
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/views/status_icons/status_tray_win.h" 5 #include "chrome/browser/views/status_icons/status_tray_win.h"
6 6
7 #include "base/win_util.h" 7 #include "base/win_util.h"
8 #include "chrome/browser/views/status_icons/status_icon_win.h" 8 #include "chrome/browser/views/status_icons/status_icon_win.h"
9 #include "chrome/common/chrome_constants.h" 9 #include "chrome/common/chrome_constants.h"
10 10
(...skipping 23 matching lines...) Expand all
34 LPARAM lparam) { 34 LPARAM lparam) {
35 StatusTrayWin* msg_wnd = reinterpret_cast<StatusTrayWin*>( 35 StatusTrayWin* msg_wnd = reinterpret_cast<StatusTrayWin*>(
36 GetWindowLongPtr(hwnd, GWLP_USERDATA)); 36 GetWindowLongPtr(hwnd, GWLP_USERDATA));
37 return msg_wnd->WndProc(hwnd, message, wparam, lparam); 37 return msg_wnd->WndProc(hwnd, message, wparam, lparam);
38 } 38 }
39 39
40 LRESULT CALLBACK StatusTrayWin::WndProc(HWND hwnd, 40 LRESULT CALLBACK StatusTrayWin::WndProc(HWND hwnd,
41 UINT message, 41 UINT message,
42 WPARAM wparam, 42 WPARAM wparam,
43 LPARAM lparam) { 43 LPARAM lparam) {
44 // TODO(atwilson): Add support for right clicks and context menu messages
45 // (tracked in http://crbug.com/37375).
46 switch (message) { 44 switch (message) {
47 case kStatusIconMessage: 45 case kStatusIconMessage:
48 switch (lparam) { 46 switch (lparam) {
49 case WM_LBUTTONDOWN: 47 case WM_LBUTTONDOWN:
48 case WM_RBUTTONDOWN:
49 case WM_CONTEXTMENU:
50 // Walk our icons, find which one was clicked on, and invoke its 50 // Walk our icons, find which one was clicked on, and invoke its
51 // DispatchClickEvent() method. 51 // HandleClickEvent() method.
52 for (StatusIconList::const_iterator iter = status_icons().begin(); 52 for (StatusIconList::const_iterator iter = status_icons().begin();
53 iter != status_icons().end(); 53 iter != status_icons().end();
54 ++iter) { 54 ++iter) {
55 StatusIconWin* win_icon = static_cast<StatusIconWin*>(*iter); 55 StatusIconWin* win_icon = static_cast<StatusIconWin*>(*iter);
56 if (win_icon->icon_id() == wparam) 56 if (win_icon->icon_id() == wparam) {
57 win_icon->DispatchClickEvent(); 57 POINT p;
58 GetCursorPos(&p);
59 win_icon->HandleClickEvent(p.x, p.y, lparam == WM_LBUTTONDOWN);
60 }
58 } 61 }
59 return TRUE; 62 return TRUE;
60 } 63 }
61 break; 64 break;
62 } 65 }
63 return ::DefWindowProc(hwnd, message, wparam, lparam); 66 return ::DefWindowProc(hwnd, message, wparam, lparam);
64 } 67 }
65 68
66 StatusTrayWin::~StatusTrayWin() { 69 StatusTrayWin::~StatusTrayWin() {
67 if (window_) 70 if (window_)
68 DestroyWindow(window_); 71 DestroyWindow(window_);
69 UnregisterClass(chrome::kStatusTrayWindowClass, GetModuleHandle(NULL)); 72 UnregisterClass(chrome::kStatusTrayWindowClass, GetModuleHandle(NULL));
70 } 73 }
71 74
72 StatusIcon* StatusTrayWin::CreatePlatformStatusIcon() { 75 StatusIcon* StatusTrayWin::CreatePlatformStatusIcon() {
73 return new StatusIconWin(next_icon_id_++, window_, kStatusIconMessage); 76 return new StatusIconWin(next_icon_id_++, window_, kStatusIconMessage);
74 } 77 }
75 78
76 StatusTray* StatusTray::Create() { 79 StatusTray* StatusTray::Create() {
77 return new StatusTrayWin(); 80 return new StatusTrayWin();
78 } 81 }
OLDNEW
« no previous file with comments | « chrome/browser/views/status_icons/status_icon_win.cc ('k') | chrome/browser/views/status_icons/status_tray_win_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698