Hi Team,

I have added a button for the fullscreen in Guacamole 1.0.0 Version.

*FILE [ index.html ]*

<div class="toolbar" id="toolbar">
> <img src="images/logo-144.png" title="Fullscreen" draggable="false"
> class="ffullscreen" id="Fullscreen"
> ng-click="toolBarFunctionality.menuControl.menuFunction.onFullScreen()"
> style="background-image: url('images/logo-144.png');">
> </div>
>


*Controller [ indexController  ]*

var *onFullScreen *= function ()
> {
> if (!document.fullscreenElement && !document.mozFullScreenElement &&
> !document.webkitFullscreenElement && !document.msFullscreenElement)
> { // current working methods
>
> document.getElementById("Fullscreen").style.backgroundImage =
> "url('/fes-bin/public/portal/html5/minimize.png')";
> document.getElementById("Fullscreen").title = "Exit fullScreen";
>
> if (document.documentElement.requestFullscreen) {
> document.documentElement.requestFullscreen();
> } else if (document.documentElement.msRequestFullscreen) {
> console.log('IE full screen called');
> document.documentElement.msRequestFullscreen();
> } else if (document.documentElement.mozRequestFullScreen) {
> document.documentElement.mozRequestFullScreen();
> } else if (document.documentElement.webkitRequestFullscreen) {
>
> document.documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
> }
> } else {
> document.getElementById("Fullscreen").style.backgroundImage =
> "url('/fes-bin/public/portal/html5/fullscreen.png')";
> document.getElementById("Fullscreen").title = "FullScreen";
>
> if (document.exitFullscreen) {
> document.exitFullscreen();
> } else if (document.msExitFullscreen) {
> document.msExitFullscreen();
> } else if (document.mozCancelFullScreen) {
> document.mozCancelFullScreen();
> } else if (document.webkitExitFullscreen) {
> document.webkitExitFullscreen();
> }
> }
>
> }
> $scope.toolBarFunctionality = {
> menuControl: {
> menuCss: {
> backColor: '',
> foreCOlor: ''
> },
> menuFunction: {
> onFullScreen : onFullScreen,
> onClick: function() {
> // raise event to toggle menu.
> $rootScope.$broadcast('menuClicked');
> }
> },
> }
> };


It is working in Chrome, Firefox, Safari and Edge.

It is not working in IE. I debugged and came to know that *OffsetHeight *and
*OffsetWidth *passed is zero.

 var checkSize = function checkSize() {
>                 // Call callback only if size actually changed
>                 if (element.offsetWidth !== lastWidth
>                  || element.offsetHeight !== lastHeight) {
>                     // Call resize callback, if defined
>                     if (guacResize) {
>                         $scope.$evalAsync(function elementSizeChanged() {
>                             guacResize(element.offsetWidth,
> element.offsetHeight);
>                         });
>                     }
>                     // Update stored size
>                     lastWidth  = element.offsetWidth;
>                     lastHeight = element.offsetHeight;
>                  }
>   };



It closed the websocket connection as well because of the* kernel trap
divide error* .

I have fixed the above kernel trap error by adding the following :-


void guac_rdp_disp_set_size(guac_rdp_disp* disp, guac_rdp_settings*
> settings,
>         freerdp* rdp_inst, int width, int height) {
>
>
> * /* Do not update size if no requests have been received */    if (width
> == 0 || height == 0)        return;*
>     /* Fit width within bounds, adjusting height to maintain aspect ratio
> */
>     guac_rdp_disp_fit(&width, &height);
>     /* Fit height within bounds, adjusting width to maintain aspect ratio
> */
>     guac_rdp_disp_fit(&height, &width);
>     /* Width must be even */
>     if (width % 2 == 1)
>         width -= 1;
>     /* Store deferred size */
>     disp->requested_width = width;
>     disp->requested_height = height;
>     /* Send display update notification if possible */
>     guac_rdp_disp_update_size(disp, settings, rdp_inst);
> }


*but I couldn't find why document.msExitFullscreen() API is not working in
Guacamole.*
Any suggestions for the above ?

*Thanks and Regards,*
*Amarjeet Singh*

Reply via email to