GUAC-955: OSK should not cover visible display area.

This commit is contained in:
Michael Jumper
2014-12-28 13:50:29 -08:00
parent c39ba2151b
commit 04dee83802
6 changed files with 55 additions and 21 deletions

View File

@@ -57,6 +57,13 @@ angular.module('osk').directive('guacOsk', [function guacOsk() {
*/
var main = $element[0];
/**
* The element which functions as a detector for size changes.
*
* @type Element
*/
var resizeSensor = $element.find('.resize-sensor')[0];
/**
* Event listener which resizes the current keyboard, if any, such
* that it fits within available space.
@@ -73,8 +80,10 @@ angular.module('osk').directive('guacOsk', [function guacOsk() {
$scope.$watch("layout", function setLayout(layout) {
// Remove current keyboard
keyboard = null;
main.innerHTML = "";
if (keyboard) {
main.removeChild(keyboard.getElement());
keyboard = null;
}
// Load new keyboard
if (layout) {
@@ -96,18 +105,13 @@ angular.module('osk').directive('guacOsk', [function guacOsk() {
$rootScope.$broadcast('guacSyntheticKeyup', keysym);
};
// Resize keyboard whenever window changes size
$window.addEventListener('resize', resizeListener);
// Resize keyboard whenever element changes size
resizeSensor.contentWindow.addEventListener('resize', resizeListener);
}
}); // end layout scope watch
// Clean up event listeners upon destroy
$scope.$on('$destroy', function destroyKeyboard() {
$window.removeEventListener('resize', resizeListener);
});
}]
};