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

Unified Diff: remoting/host/disconnect_window_win.cc

Issue 7613009: Add support for Disconnect hot key in Windows. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/host/disconnect_window_win.cc
===================================================================
--- remoting/host/disconnect_window_win.cc (revision 96410)
+++ remoting/host/disconnect_window_win.cc (working copy)
@@ -25,6 +25,8 @@
// SimpleHost: simple_host_process.cc
extern HMODULE g_hModule;
+const int DISCONNECT_HOTKEY_ID = 1000;
+
namespace remoting {
class DisconnectWindowWin : public DisconnectWindow {
@@ -42,11 +44,14 @@
BOOL OnDialogMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
- void EndDialog();
+ void ShutdownHost();
+ void SetDisconnectButtonText(HWND hwnd);
+ void EndDialog(int result);
remoting::ChromotingHost* host_;
std::string username_;
HWND hwnd_;
+ bool has_hotkey_;
DISALLOW_COPY_AND_ASSIGN(DisconnectWindowWin);
};
@@ -54,11 +59,12 @@
DisconnectWindowWin::DisconnectWindowWin()
: host_(NULL),
username_(""),
- hwnd_(NULL) {
+ hwnd_(NULL),
+ has_hotkey_(false) {
}
DisconnectWindowWin::~DisconnectWindowWin() {
- EndDialog();
+ EndDialog(0);
}
BOOL CALLBACK DisconnectWindowWin::DialogProc(HWND hwnd, UINT msg,
@@ -86,11 +92,7 @@
std::wstring w_title = UTF8ToWide(kTitle);
SetWindowText(hwnd, w_title.c_str());
- HWND hwndButton = GetDlgItem(hwnd, IDC_DISCONNECT);
- CHECK(hwndButton);
- std::wstring w_button = UTF8ToWide(kDisconnectButton);
- w_button += UTF8ToWide(kDisconnectKeysWin);
- SetWindowText(hwndButton, w_button.c_str());
+ SetDisconnectButtonText(hwnd);
HWND hwndSharingWith = GetDlgItem(hwnd, IDC_DISCONNECT_SHARINGWITH);
CHECK(hwndSharingWith);
@@ -104,6 +106,12 @@
SetWindowText(hwndUsername, w_username.c_str());
}
return TRUE;
+ case WM_HOTKEY:
+ {
+ ShutdownHost();
+ EndDialog(0);
+ }
+ return TRUE;
case WM_CLOSE:
// Ignore close messages.
return TRUE;
@@ -115,10 +123,8 @@
switch (LOWORD(wParam)) {
case IDC_DISCONNECT:
{
- CHECK(host_);
- host_->Shutdown(NULL);
- ::EndDialog(hwnd, LOWORD(wParam));
- hwnd_ = NULL;
+ ShutdownHost();
+ EndDialog(LOWORD(wParam));
}
return TRUE;
}
@@ -140,15 +146,41 @@
}
ShowWindow(hwnd_, SW_SHOW);
+
+ // Set up handler for Ctrl-Alt-Esc shortcut.
+ if (!has_hotkey_ && RegisterHotKey(hwnd_, DISCONNECT_HOTKEY_ID,
+ MOD_ALT | MOD_CONTROL, VK_ESCAPE)) {
+ has_hotkey_ = true;
+ }
+ SetDisconnectButtonText(hwnd_);
}
+void DisconnectWindowWin::ShutdownHost() {
+ CHECK(host_);
+ host_->Shutdown(NULL);
+}
+
+void DisconnectWindowWin::SetDisconnectButtonText(HWND hwnd) {
+ HWND hwndButton = GetDlgItem(hwnd, IDC_DISCONNECT);
+ CHECK(hwndButton);
+ std::wstring w_button = UTF8ToWide(kDisconnectButton);
+ if (has_hotkey_)
+ w_button += UTF8ToWide(kDisconnectKeysWin);
+ SetWindowText(hwndButton, w_button.c_str());
+}
+
void DisconnectWindowWin::Hide() {
- EndDialog();
+ EndDialog(0);
}
-void DisconnectWindowWin::EndDialog() {
+void DisconnectWindowWin::EndDialog(int result) {
+ if (has_hotkey_) {
+ UnregisterHotKey(hwnd_, DISCONNECT_HOTKEY_ID);
+ has_hotkey_ = false;
+ }
+
if (hwnd_) {
- ::EndDialog(hwnd_, 0);
+ ::EndDialog(hwnd_, result);
hwnd_ = NULL;
}
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698