Merge pull request #767 from Bakke/buffer-search-improved
Use arrow keys to select buffer in buffer search
This commit is contained in:
commit
6d3ef2f86b
|
@ -285,6 +285,12 @@ input[type=text], input[type=password], #sendMessage {
|
||||||
color: #222;
|
color: #222;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.nav-pills > li.highlight > a, .nav-pills > li.highlight > a span {
|
||||||
|
text-decoration: none;
|
||||||
|
color: #fff;
|
||||||
|
background: #428BCA;
|
||||||
|
}
|
||||||
|
|
||||||
.nav-pills > li > a {
|
.nav-pills > li > a {
|
||||||
display: block;
|
display: block;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
|
@ -35,6 +35,11 @@ html {
|
||||||
color: #222;
|
color: #222;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.nav-pills > li.highlight > a, .nav-pills > li.highlight > a span {
|
||||||
|
color: #fff;
|
||||||
|
background: #428BCA;
|
||||||
|
}
|
||||||
|
|
||||||
tr.bufferline:hover {
|
tr.bufferline:hover {
|
||||||
background-color: #222222;
|
background-color: #222222;
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,11 @@ html {
|
||||||
background-color: #222;
|
background-color: #222;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.nav-pills > li.highlight > a, .nav-pills > li.highlight > a span {
|
||||||
|
color: #fff;
|
||||||
|
background: #428BCA;
|
||||||
|
}
|
||||||
|
|
||||||
.btn-send,
|
.btn-send,
|
||||||
.btn-send-image, {
|
.btn-send-image, {
|
||||||
background: none repeat scroll 0% 0% rgba(255, 255, 255, 0.3);
|
background: none repeat scroll 0% 0% rgba(255, 255, 255, 0.3);
|
||||||
|
|
|
@ -259,7 +259,7 @@ $ openssl req -nodes -newkey rsa:4096 -keyout relay.pem -x509 -days 365 -out rel
|
||||||
<input class="form-control favorite-font" type="text" id="bufferFilter" ng-model="search" ng-keydown="handleSearchBoxKey($event)" placeholder="Search" autocomplete="off">
|
<input class="form-control favorite-font" type="text" id="bufferFilter" ng-model="search" ng-keydown="handleSearchBoxKey($event)" placeholder="Search" autocomplete="off">
|
||||||
</form>
|
</form>
|
||||||
</li>
|
</li>
|
||||||
<li class="buffer" ng-class="{'active': buffer.active, 'indent': buffer.indent, 'channel': buffer.type === 'channel', 'channel_hash': buffer.prefix === '#', 'channel_plus': buffer.prefix === '+', 'channel_ampersand': buffer.prefix === '&', 'private': buffer.type === 'private'}" ng-repeat="(key, buffer) in (filteredBuffers = (getBuffers() | toArray:'withidx' | filter:{fullName:search} | filter:hasUnread | orderBy:predicate | getBufferQuickKeys:this))">
|
<li class="buffer" ng-class="{'active': buffer.active, 'highlight': search && search_highlight_key === key, 'indent': buffer.indent, 'channel': buffer.type === 'channel', 'channel_hash': buffer.prefix === '#', 'channel_plus': buffer.prefix === '+', 'channel_ampersand': buffer.prefix === '&', 'private': buffer.type === 'private'}" ng-repeat="(key, buffer) in (filteredBuffers = (getBuffers() | toArray:'withidx' | filter:{fullName:search} | filter:hasUnread | orderBy:predicate | getBufferQuickKeys:this))">
|
||||||
<a ng-click="setActiveBuffer(buffer.id)" title="{{ buffer.fullName }}" href="#">
|
<a ng-click="setActiveBuffer(buffer.id)" title="{{ buffer.fullName }}" href="#">
|
||||||
<span class="badge pull-right" ng-class="{'danger': buffer.notification}" ng-if="buffer.notification || buffer.unread" ng-bind="buffer.notification || buffer.unread"></span>
|
<span class="badge pull-right" ng-class="{'danger': buffer.notification}" ng-if="buffer.notification || buffer.unread" ng-bind="buffer.notification || buffer.unread"></span>
|
||||||
<span class="buffer-quick-key">{{ buffer.$quickKey }}</span>
|
<span class="buffer-quick-key">{{ buffer.$quickKey }}</span>
|
||||||
|
|
|
@ -750,17 +750,39 @@ weechat.controller('WeechatCtrl', ['$rootScope', '$scope', '$store', '$timeout',
|
||||||
$scope.handleSearchBoxKey = function($event) {
|
$scope.handleSearchBoxKey = function($event) {
|
||||||
// Support different browser quirks
|
// Support different browser quirks
|
||||||
var code = $event.keyCode ? $event.keyCode : $event.charCode;
|
var code = $event.keyCode ? $event.keyCode : $event.charCode;
|
||||||
|
|
||||||
// Handle escape
|
// Handle escape
|
||||||
if (code === 27) {
|
if (code === 27) {
|
||||||
$event.preventDefault();
|
$event.preventDefault();
|
||||||
$scope.search = '';
|
$scope.search = '';
|
||||||
} // Handle enter
|
} // Handle enter
|
||||||
else if (code === 13) {
|
else if (code === 13) {
|
||||||
|
var index;
|
||||||
$event.preventDefault();
|
$event.preventDefault();
|
||||||
if ($scope.filteredBuffers.length > 0) {
|
if ($scope.filteredBuffers.length > 0) {
|
||||||
$scope.setActiveBuffer($scope.filteredBuffers[0].id);
|
// Go to highlighted buffer if available
|
||||||
|
// or first one
|
||||||
|
if ($scope.search_highlight_key) {
|
||||||
|
index = $scope.search_highlight_key;
|
||||||
|
} else {
|
||||||
|
index = 0;
|
||||||
|
}
|
||||||
|
$scope.setActiveBuffer($scope.filteredBuffers[index].id);
|
||||||
}
|
}
|
||||||
$scope.search = '';
|
$scope.search = '';
|
||||||
|
} // Handle arrow up
|
||||||
|
else if (code === 38) {
|
||||||
|
$event.preventDefault();
|
||||||
|
if ($scope.search_highlight_key && $scope.search_highlight_key > 0) {
|
||||||
|
$scope.search_highlight_key = $scope.search_highlight_key - 1;
|
||||||
|
}
|
||||||
|
} // Handle arrow down and tab
|
||||||
|
else if (code === 40 || code === 9) {
|
||||||
|
$event.preventDefault();
|
||||||
|
$scope.search_highlight_key = $scope.search_highlight_key + 1;
|
||||||
|
} // Set highlight key to zero on all other keypress
|
||||||
|
else {
|
||||||
|
$scope.search_highlight_key = 0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue