Craig Myles
Craig Myles

Reputation: 5464

Is it possible to prevent a flex application from being resized at runtime?

From what I can gather, the resize property of a Flex application is set in the XML config file:

<!--Whether the user can resize the window. Optional. Default true.-->
<!--<resizable></resizable>-->

However, if I set this attribute to true, is there a way to turn this off dynamically at runtime? For example, my application has two view modes - mini and maxi. I would like to prevent the end user from being able to resize the application when in mini mode. I tried prevent the resize using the following code but it does not seem to work:

private function creationComplete():void {
    this.systemManager.stage.addEventListener(Event.RESIZE, resizeListener);
}

private function resizeListener(evt:Event):void {
    evt.preventDefault();
}

Any help would be greatly appreciated.

Upvotes: 0

Views: 1186

Answers (5)

Mahesh Iyer
Mahesh Iyer

Reputation: 41

There is another way to do that without setting the descriptor file property.

Here is the code:

<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" showGripper="false"
                    layout="vertical" showStatusBar="false"
                    applicationComplete="init()">

<mx:Script>
    <![CDATA[
        import mx.events.FlexNativeWindowBoundsEvent;

        private function init():void
        {
            this.stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
            nativeWindow.addEventListener(NativeWindowBoundsEvent.RESIZING, onAppResize);
        }

        private function onAppResize(e:NativeWindowBoundsEvent):void
        {
                e.preventDefault();
        }

   ]]>
</mx:Script>

Hope this helps.

Upvotes: 4

Sam DeHaan
Sam DeHaan

Reputation: 10325

As this was already necro'd, and I was curious:

I was able to implement a switch from resizable to not with the following code:

private var maxMode:Boolean = true;

protected function switchMode():void
{
    if (maxMode){
        //I chose to freeze the app at current size
        //You could also set the min/max to hard coded values
        this.maxWidth = this.width;
        this.minWidth = this.width;
        this.maxHeight = this.height;
        this.minHeight = this.height;
    }
    else {
        //default values for WindowedApplication
        this.maxWidth = 2880;
        this.minWidth = 0;
        this.maxHeight = 2880;
        this.minHeight = 0;
    }

    maxMode= !maxMode
}

The user is however still shown the resize mouse icons on the edges of the app.

Upvotes: 0

Nemi
Nemi

Reputation: 1032

Try to add return:

evt.preventDefault();
return;

Upvotes: -1

Gregor Kiddie
Gregor Kiddie

Reputation: 3119

You'd need to create a new NativeWindow instance and reparent your application into that. When you create a new NativeWindow, you've got options you can set at Initialisation time, including resizable. http://help.adobe.com/en_US/FlashPlatform//reference/actionscript/3/flash/display/NativeWindowInitOptions.html

Upvotes: 1

Martin
Martin

Reputation: 434

According to manual, resizable is read-only property. So it's probably not possible.

Upvotes: 0

Related Questions