Thank you for the help. Using scheduleDeferred solved the issue.
/Ulas
Den lördagen den 26:e maj 2012 kl. 19:45:03 UTC+2 skrev Ulas:
>
> Hi,
>
> I have a LayoutPanel containing two custom widgets. The widgets both
> extend ResizeComposite in order to be able to receive the onResize call.
> The main idea is illustrated in the code below. The two widgets share the
> same space and depending on user input they are shown in one of three
> different ways: widget #1 taking up the entire width, widget #1 & #2 are
> displayed side by side (sharing the available width 50/50) and widget #2
> taking up the entire width.
>
> LayoutPanel viewPanel = new LayoutPanel();
> CustomWidgetExtendingResizeComposite1 custom1 =
> new CustomWidgetExtendingResizeComposite1();
> CustomWidgetExtendingResizeComposite2 custom2 =
> new CustomWidgetExtendingResizeComposite2();
> viewPanel.add(custom1;)
> viewPanel.add(custom2);
>
>
> public void onClick(String mode)
> {
>
> if (mode == "show widget #1")
>
> {
>
> this.viewPanel.setWidgetLeftWidth( custom1 , 0, Unit.PCT, 0, Unit.PCT);
>
> this.viewPanel.setWidgetLeftWidth( custom2 , 0, Unit.PCT, 100,
> Unit.PCT);
>
> }
>
> else if (mode == "show widget #1 and #2")
>
> {
>
> this.viewPanel.setWidgetLeftWidth( custom1 , 0, Unit.PCT, 50, Unit.PCT);
>
> this.viewPanel.setWidgetLeftWidth( custom2 , 50, Unit.PCT, 50,
> Unit.PCT);
>
> }
>
> else if (mode == "show widget #2")
> {
>
> this.viewPanel.setWidgetLeftWidth( custom1 , 0, Unit.PCT, 100, Unit.PCT);
>
> this.viewPanel.setWidgetLeftWidth( custom2 , 100, Unit.PCT, 0,
> Unit.PCT);
>
> }
>
> }
>
> Now to the weird part: When the parent (viewPanel) fires the onResize
> event it doesn't actually change the child widgets' size immidiately, but
> only does so after a while. I know this because I've overriden the onResize
> functions in both the custom widget classes and at the time of the onResize
> they still have their old width values. However, if I introduce a timer
> into my code that after a small time period (say 100 ms) manually fires the
> viewPanel's onResize function it works. By then the custom widgets have
> both somehow had their width set to the correct valules.
>
> How can this be? Why don't the child widgets have their width values
> changed immidiately when the parent fires their respective onResize
> functions?
>
Den lördagen den 26:e maj 2012 kl. 19:45:03 UTC+2 skrev Ulas:
>
> Hi,
>
> I have a LayoutPanel containing two custom widgets. The widgets both
> extend ResizeComposite in order to be able to receive the onResize call.
> The main idea is illustrated in the code below. The two widgets share the
> same space and depending on user input they are shown in one of three
> different ways: widget #1 taking up the entire width, widget #1 & #2 are
> displayed side by side (sharing the available width 50/50) and widget #2
> taking up the entire width.
>
> LayoutPanel viewPanel = new LayoutPanel();
> CustomWidgetExtendingResizeComposite1 custom1 =
> new CustomWidgetExtendingResizeComposite1();
> CustomWidgetExtendingResizeComposite2 custom2 =
> new CustomWidgetExtendingResizeComposite2();
> viewPanel.add(custom1;)
> viewPanel.add(custom2);
>
>
> public void onClick(String mode)
> {
>
> if (mode == "show widget #1")
>
> {
>
> this.viewPanel.setWidgetLeftWidth( custom1 , 0, Unit.PCT, 0, Unit.PCT);
>
> this.viewPanel.setWidgetLeftWidth( custom2 , 0, Unit.PCT, 100,
> Unit.PCT);
>
> }
>
> else if (mode == "show widget #1 and #2")
>
> {
>
> this.viewPanel.setWidgetLeftWidth( custom1 , 0, Unit.PCT, 50, Unit.PCT);
>
> this.viewPanel.setWidgetLeftWidth( custom2 , 50, Unit.PCT, 50,
> Unit.PCT);
>
> }
>
> else if (mode == "show widget #2")
> {
>
> this.viewPanel.setWidgetLeftWidth( custom1 , 0, Unit.PCT, 100, Unit.PCT);
>
> this.viewPanel.setWidgetLeftWidth( custom2 , 100, Unit.PCT, 0,
> Unit.PCT);
>
> }
>
> }
>
> Now to the weird part: When the parent (viewPanel) fires the onResize
> event it doesn't actually change the child widgets' size immidiately, but
> only does so after a while. I know this because I've overriden the onResize
> functions in both the custom widget classes and at the time of the onResize
> they still have their old width values. However, if I introduce a timer
> into my code that after a small time period (say 100 ms) manually fires the
> viewPanel's onResize function it works. By then the custom widgets have
> both somehow had their width set to the correct valules.
>
> How can this be? Why don't the child widgets have their width values
> changed immidiately when the parent fires their respective onResize
> functions?
>
Den lördagen den 26:e maj 2012 kl. 19:45:03 UTC+2 skrev Ulas:
>
> Hi,
>
> I have a LayoutPanel containing two custom widgets. The widgets both
> extend ResizeComposite in order to be able to receive the onResize call.
> The main idea is illustrated in the code below. The two widgets share the
> same space and depending on user input they are shown in one of three
> different ways: widget #1 taking up the entire width, widget #1 & #2 are
> displayed side by side (sharing the available width 50/50) and widget #2
> taking up the entire width.
>
> LayoutPanel viewPanel = new LayoutPanel();
> CustomWidgetExtendingResizeComposite1 custom1 =
> new CustomWidgetExtendingResizeComposite1();
> CustomWidgetExtendingResizeComposite2 custom2 =
> new CustomWidgetExtendingResizeComposite2();
> viewPanel.add(custom1;)
> viewPanel.add(custom2);
>
>
> public void onClick(String mode)
> {
>
> if (mode == "show widget #1")
>
> {
>
> this.viewPanel.setWidgetLeftWidth( custom1 , 0, Unit.PCT, 0, Unit.PCT);
>
> this.viewPanel.setWidgetLeftWidth( custom2 , 0, Unit.PCT, 100,
> Unit.PCT);
>
> }
>
> else if (mode == "show widget #1 and #2")
>
> {
>
> this.viewPanel.setWidgetLeftWidth( custom1 , 0, Unit.PCT, 50, Unit.PCT);
>
> this.viewPanel.setWidgetLeftWidth( custom2 , 50, Unit.PCT, 50,
> Unit.PCT);
>
> }
>
> else if (mode == "show widget #2")
> {
>
> this.viewPanel.setWidgetLeftWidth( custom1 , 0, Unit.PCT, 100, Unit.PCT);
>
> this.viewPanel.setWidgetLeftWidth( custom2 , 100, Unit.PCT, 0,
> Unit.PCT);
>
> }
>
> }
>
> Now to the weird part: When the parent (viewPanel) fires the onResize
> event it doesn't actually change the child widgets' size immidiately, but
> only does so after a while. I know this because I've overriden the onResize
> functions in both the custom widget classes and at the time of the onResize
> they still have their old width values. However, if I introduce a timer
> into my code that after a small time period (say 100 ms) manually fires the
> viewPanel's onResize function it works. By then the custom widgets have
> both somehow had their width set to the correct valules.
>
> How can this be? Why don't the child widgets have their width values
> changed immidiately when the parent fires their respective onResize
> functions?
>
--
You received this message because you are subscribed to the Google Groups
"Google Web Toolkit" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/google-web-toolkit/-/ecZ7yGQ_ctIJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-web-toolkit?hl=en.