diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/layout/managers/LayoutManager.as b/bigbluebutton-client/src/org/bigbluebutton/modules/layout/managers/LayoutManager.as index 8791942a70..36c0e29d27 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/layout/managers/LayoutManager.as +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/layout/managers/LayoutManager.as @@ -71,17 +71,6 @@ package org.bigbluebutton.modules.layout.managers private var _layoutModel:LayoutModel = LayoutModel.getInstance(); - /** - * If (sync) affects viewers only. - */ - private var _viewersOnly:Boolean = false; - - /** - * If we sync automatically with other users while the action (move, resize) is done on the - * window. - */ - private var _autoSync:Boolean = false; - private var _eventsToDelay:Array = new Array(MDIManagerEvent.WINDOW_RESTORE, MDIManagerEvent.WINDOW_MINIMIZE, MDIManagerEvent.WINDOW_MAXIMIZE); @@ -95,9 +84,7 @@ package org.bigbluebutton.modules.layout.managers }); _sendCurrentLayoutUpdateTimer.addEventListener(TimerEvent.TIMER, function(e:TimerEvent):void { //trace(LOG + "Applying layout due to window resize"); - if (_autoSync) - //trace(LOG + "Applying layout on autoSync"); - sendLayoutUpdate(updateCurrentLayout(_currentLayout)); + sendLayoutUpdate(updateCurrentLayout(null)); }); } @@ -315,22 +302,20 @@ package org.bigbluebutton.modules.layout.managers _applyCurrentLayoutTimer.start(); } - private function onActionOverWindowFinished(e:MDIManagerEvent):void { + private function onActionOverWindowFinished(e:MDIManagerEvent):void { if (LayoutDefinition.ignoreWindow(e.window)) return; checkPermissionsOverWindow(e.window); //trace(LOG + "Window is being resized. Event=[" + e.type + "]"); - updateCurrentLayout(_currentLayout); - /* - * some events related to animated actions must be delayed because if it's not, the - * current layout doesn't get properly updated - */ - if (_eventsToDelay.indexOf(e.type) != -1) { - _sendCurrentLayoutUpdateTimer.reset(); - _sendCurrentLayoutUpdateTimer.start(); - } - } + //updateCurrentLayout(null); + /* + * All events must be delayed because the window doesn't actually + * change size until after the animation has finished. + */ + _sendCurrentLayoutUpdateTimer.reset(); + _sendCurrentLayoutUpdateTimer.start(); + } private function updateCurrentLayout(layout:LayoutDefinition):LayoutDefinition { //trace(LOG + "updateCurrentLayout"); diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/layout/model/LayoutDefinition.as b/bigbluebutton-client/src/org/bigbluebutton/modules/layout/model/LayoutDefinition.as index eb7cca88f3..8319197cd8 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/layout/model/LayoutDefinition.as +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/layout/model/LayoutDefinition.as @@ -16,13 +16,16 @@ * with BigBlueButton; if not, see . * */ -package org.bigbluebutton.modules.layout.model { +package org.bigbluebutton.modules.layout.model { public class LayoutDefinition { import flash.utils.Dictionary; + import flash.utils.getQualifiedClassName; + import flexlib.mdi.containers.MDICanvas; - import flexlib.mdi.containers.MDIWindow; + import flexlib.mdi.containers.MDIWindow; + import org.bigbluebutton.common.LogUtil; import org.bigbluebutton.common.Role; import org.bigbluebutton.core.managers.UserManager; @@ -126,62 +129,9 @@ package org.bigbluebutton.modules.layout.model { return xml; } - /* - * 0 if there's no order - * 1 if "a" should appears after "b" - * -1 if "a" should appears before "b" - */ - private function sortWindows(a:Object, b:Object):int { - // ignored windows are positioned in front - if (a.ignored && b.ignored) return 0; - if (a.ignored) return 1; - if (b.ignored) return -1; - // then comes the windows that has no layout definition - if (!a.hasLayoutDefinition && !b.hasLayoutDefinition) return 0; - if (!a.hasLayoutDefinition) return 1; - if (!b.hasLayoutDefinition) return -1; - // then the focus order is used to sort - if (a.order == b.order) return 0; - if (a.order == -1) return 1; - if (b.order == -1) return -1; - return (a.order < b.order? 1: -1); - } - - private function adjustWindowsOrder(canvas:MDICanvas):void { - var orderedList:Array = new Array(); - var type:String; - var order:int; - var ignored:Boolean; - var hasLayoutDefinition:Boolean; - -// LogUtil.debug("=> Before sort"); - for each (var window:MDIWindow in canvas.windowManager.windowList) { - type = WindowLayout.getType(window); - hasLayoutDefinition = myLayout.hasOwnProperty(type); - if (hasLayoutDefinition) - order = myLayout[type].order; - else - order = -1; - ignored = ignoreWindowByType(type); - var item:Object = { window:window, order:order, type:type, ignored:ignored, hasLayoutDefinition:hasLayoutDefinition }; - orderedList.push(item); -// LogUtil.debug("===> type: " + item.type + " ignored? " + item.ignored + " hasLayoutDefinition? " + item.hasLayoutDefinition + " order? " + item.order); - } - orderedList.sort(this.sortWindows); -// LogUtil.debug("=> After sort"); - for each (var obj:Object in orderedList) { -// LogUtil.debug("===> type: " + obj.type + " ignored? " + obj.ignored + " hasLayoutDefinition? " + obj.hasLayoutDefinition + " order? " + obj.order); - if (!obj.ignored) - OrderManager.getInstance().bringToFront(obj.window); - canvas.windowManager.bringToFront(obj.window); - } - } - public function applyToCanvas(canvas:MDICanvas):void { if (canvas == null) return; - - adjustWindowsOrder(canvas); var windows:Array = canvas.windowManager.windowList; // LogUtil.traceObject(myLayout); @@ -189,14 +139,14 @@ package org.bigbluebutton.modules.layout.model { var type:String; for each (var window:MDIWindow in windows) { - type = WindowLayout.getType(window); - //trace(LOG + "Determine if we need to apply layout [" + name + "] for window [" + type + "]"); + type = WindowLayout.getType(window); + //trace(LOG + "Determine if we need to apply layout [" + name + "] for window [" + type + "]"); if (!ignoreWindowByType(type)) { - //trace(LOG + "Applying layout [" + name + "] to window [" + type + "]"); + //trace(LOG + "Applying layout [" + name + "] to window [" + type + "]"); WindowLayout.setLayout(canvas, window, transformedLayout[type]); - } else { - //trace(LOG + "Ignoring layout [" + name + "] to window [" + type + "]"); - } + } else { + //trace(LOG + "Ignoring layout [" + name + "] to window [" + type + "]"); + } } } diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/present/ui/views/PresentationWindow.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/present/ui/views/PresentationWindow.mxml index 08829b6f53..2cc4ae1948 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/present/ui/views/PresentationWindow.mxml +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/present/ui/views/PresentationWindow.mxml @@ -30,7 +30,7 @@ with BigBlueButton; if not, see . showCloseButton="false" layout="absolute" verticalScrollPolicy="off" horizontalScrollPolicy="off" - showControls="true" resize="maximizeHandler()" + showControls="true" resize="resizeHandler()" styleNameFocus="presentationWindowStyleFocus" styleNameNoFocus="presentationWindowStyleNoFocus" implements="org.bigbluebutton.common.IBbbModuleWindow" @@ -239,11 +239,9 @@ with BigBlueButton; if not, see . focusManager.setFocus(titleBarOverlay); } - private function maximizeHandler():void { + private function resizeHandler():void { // When the window is maximized, we want to resize the slide maintaining the aspect ratio. fitSlideToWindowMaintainingAspectRatio(); - //Remove focus from the maximize button in case the user presses the space bar, the window doesn't get maximized again. - stage.focus = this; } private function onResizeEndEvent(event:MDIWindowEvent):void {