From 647e396fade20917ecb6a3e4b17001dd2b88c03f Mon Sep 17 00:00:00 2001 From: Yuya Ochiai Date: Sun, 14 Aug 2016 00:08:18 +0900 Subject: [PATCH 1/3] Focus the search box on Ctrl/Cmd+F shortcut For #229 --- src/browser/index.jsx | 6 ++++++ src/browser/webview/mattermost.js | 13 +++++++++++++ src/main/menus/app.js | 10 +++++++++- 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/browser/index.jsx b/src/browser/index.jsx index 07f701dc..32d51990 100644 --- a/src/browser/index.jsx +++ b/src/browser/index.jsx @@ -75,6 +75,12 @@ var MainPage = React.createClass({ this.refs[`mattermostView${this.state.key}`].clearCacheAndReload(); }); + // activate search box in current tab + ipcRenderer.on('activate-search-box', (event) => { + let webview = document.getElementById('mattermostView' + thisObj.state.key); + webview.send('activate-search-box'); + }); + var focusListener = function() { var webview = document.getElementById('mattermostView' + thisObj.state.key); webview.focus(); diff --git a/src/browser/webview/mattermost.js b/src/browser/webview/mattermost.js index 92ed1043..dcc03279 100644 --- a/src/browser/webview/mattermost.js +++ b/src/browser/webview/mattermost.js @@ -127,3 +127,16 @@ notification.override({ ipc.sendToHost('onNotificationClick'); } }); + +// get the last of href for the current channel in the sidebar. +function getCurrentChannelString() { + const active_channel_link = document.querySelector('.active a.sidebar-channel'); + const url_elements = active_channel_link.href.split('/'); + return url_elements[url_elements.length - 1]; +} + +ipc.on('activate-search-box', (event) => { + const search_box = document.getElementsByClassName('search-bar')[0]; // should use id + search_box.focus(); + console.log(getCurrentChannelString()); +}); diff --git a/src/main/menus/app.js b/src/main/menus/app.js index b3e918f6..37bf38db 100644 --- a/src/main/menus/app.js +++ b/src/main/menus/app.js @@ -69,7 +69,15 @@ var createTemplate = function(mainWindow, config) { role: 'paste' }, { role: 'selectall' - }, ] + }, separatorItem, { + label: 'Search in Current Channel', + accelerator: 'CmdOrCtrl+F', + click: (item, focusedWindow) => { + if (focusedWindow) { + focusedWindow.webContents.send('activate-search-box'); + } + } + }] }); template.push({ label: '&View', From e377d33652bdf39a107ff2465d2bda107300d902 Mon Sep 17 00:00:00 2001 From: Yuya Ochiai Date: Tue, 16 Aug 2016 01:02:56 +0900 Subject: [PATCH 2/3] Fill the search box with the current channel name at the shortcut For #229 --- src/browser/webview/mattermost.js | 8 ++++++-- src/main/menus/app.js | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/browser/webview/mattermost.js b/src/browser/webview/mattermost.js index dcc03279..8001b63f 100644 --- a/src/browser/webview/mattermost.js +++ b/src/browser/webview/mattermost.js @@ -136,7 +136,11 @@ function getCurrentChannelString() { } ipc.on('activate-search-box', (event) => { - const search_box = document.getElementsByClassName('search-bar')[0]; // should use id + const search_boxes = document.getElementsByClassName('search-bar'); // should use id + if (search_boxes.length === 0) { + return; + } + const search_box = search_boxes[0]; search_box.focus(); - console.log(getCurrentChannelString()); + search_box.value = `in:${getCurrentChannelString()} `; }); diff --git a/src/main/menus/app.js b/src/main/menus/app.js index 37bf38db..d487662f 100644 --- a/src/main/menus/app.js +++ b/src/main/menus/app.js @@ -70,7 +70,7 @@ var createTemplate = function(mainWindow, config) { }, { role: 'selectall' }, separatorItem, { - label: 'Search in Current Channel', + label: 'Search in Channel', accelerator: 'CmdOrCtrl+F', click: (item, focusedWindow) => { if (focusedWindow) { From e8624a9dc57e6a0e5c9a6b87dc8a8f6ab7427beb Mon Sep 17 00:00:00 2001 From: Yuya Ochiai Date: Mon, 22 Aug 2016 00:12:01 +0900 Subject: [PATCH 3/3] Update changelog and document --- CHANGELOG.md | 1 + docs/setup.md | 1 + 2 files changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 32c34576..b2480082 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ Release date: TBD - Reload only the selected tab and keep its URL on "Reload" and "Clear Cache and Reload". - Disabled `eval()` function for security improvements. - Invalidate cache before load, to make server upgrades easy +- Ctrl/Command+F puts cursor in search box to search in current channel. #### Windows - Update Mattermost icon for desktop notifications in Windows 10. diff --git a/docs/setup.md b/docs/setup.md index 8bdb90f2..0ffeb318 100644 --- a/docs/setup.md +++ b/docs/setup.md @@ -149,6 +149,7 @@ Below lists menu options (shortcut keys are listed in brackets, `Ctrl` becomes ` - **Copy** (Ctrl+C) - Copies selected text - **Paste** (Ctrl+V) - Pastes text from clipboard - **Select All** (Ctrl+A) - Select all text in input box + - **Search in Channel** (Ctrl+F) - Puts cursor in search box to search in current channel - **View** - **Reload** (Ctrl+R) - Reload page from the server - **Clear Cache and Reload** (Ctrl+Shift+R) - Clear cached content in application and reload page