It seems you are asking for the scroll value before the layout has been calculated. (since the window hasn't received a fullbounds yet). | m scroll | m := PanelMorph new. m hResizing: #shrinkWrap; vResizing: #spaceFill; changeTableLayout; listDirection: #leftToRight. m addMorphBack: (Morph new minWidth: 100; hResizing: #shrinkWrap; vResizing: #spaceFill). scroll := GeneralScrollPane new changeScrollerTableLayout; scrollTarget: m. scroll openInWindow. scroll hScrollbar setValue: 1.0. m addMorphBack: (Morph new minWidth: 100; hResizing: #shrinkWrap; vResizing: #spaceFill). "Recalculate bounds now for this example... not generally needed for normal code!" scroll fullBounds. "****" scroll hScrollbar value Is not normally an issue, as you can see from inspecting the scroller after being opened. Regards, Gary ----- Original Message ----- From: "Tudor Girba" <tudor.girba@gmail.com> To: <Pharo-project@lists.gforge.inria.fr> Sent: Sunday, January 16, 2011 10:56 AM Subject: Re: [Pharo-project] aligning morphs Hi Gary, I would like to implement a Finder-like behavior the GeneralScrollPane. For this, I would need a way to control the scrolling so that every time I add a new morph, the scroller scrolls (similar to ScrollBar>>animateValue:duration: from OB). The problem seems to be that the scrollbar value is not updated when I add a new morph. Take a look at the code below. The result of the horizontal scrollbar value at the end is 1.0, while it should be lower. Am I doing something wrong, or is this a problem? | m scroll | m := PanelMorph new. m hResizing: #shrinkWrap; vResizing: #spaceFill; changeTableLayout; listDirection: #leftToRight; m addMorphBack: (Morph new minWidth: 100; hResizing: #shrinkWrap; vResizing: #spaceFill). scroll := GeneralScrollPane new changeScrollerTableLayout; scrollTarget: m. scroll openInWindow. scroll hScrollbar setValue: 1.0. m addMorphBack: (Morph new minWidth: 100; hResizing: #shrinkWrap; vResizing: #spaceFill). scroll hScrollbar value ==> 1.0 Cheers, Doru On 11 Jan 2011, at 15:17, Gary Chambers wrote:
A slight revision as this has highlighted an edge case in the original class as to when scrollbars are needed...
Regards, Gary
----- Original Message ----- From: "Tudor Girba" <tudor.girba@gmail.com> To: <Pharo-project@lists.gforge.inria.fr> Sent: Tuesday, January 11, 2011 1:53 PM Subject: Re: [Pharo-project] aligning morphs
Excellent!
I tried the example and it works well. I will work with it in the following days.
Cheers, Doru
On 11 Jan 2011, at 14:39, Gary Chambers wrote:
Try the attached change set with the following example... Let me know if any use and we'll get it integrated.
|m| m := PanelMorph new. m fillStyle: Color green; hResizing: #spaceFill; vResizing: #spaceFill; changeTableLayout; layoutInset: 8. m addMorph: (Morph new height: 160; minWidth: 100; hResizing: #spaceFill; vResizing: #shrinkWrap). GeneralScrollPane new changeScrollerTableLayout; scrollTarget: m; openInWindow
Regards, Gary
----- Original Message ----- From: "Tudor Girba" <tudor.girba@gmail.com> To: <Pharo-project@lists.gforge.inria.fr> Sent: Monday, January 10, 2011 8:23 PM Subject: Re: [Pharo-project] aligning morphs
Wow, that would be great! I cannot wait to test it.
Cheers, Doru
On 10 Jan 2011, at 16:50, Gary Chambers wrote:
I may get time later in the week to have a go with GeneralScrollPane to support the feature you desire... ;-)
Regards, Gary
----- Original Message ----- From: "Tudor Girba" <tudor.girba@gmail.com> To: <Pharo-project@lists.gforge.inria.fr> Cc: <Pharo-project@lists.gforge.inria.fr> Sent: Monday, January 10, 2011 2:23 PM Subject: Re: [Pharo-project] aligning morphs
Hi Gary,
Thanks for the reply.
So, what would be required for scrollbars to work with spaceFill? I would really need this feature, but I do not know how to go about it.
Could you or anyone else provide some hints? Of course code would be even better. But at this moment hi ts would be helpful, too :)
Cheers, Doru
On Jan 10, 2011, at 13:04, "Gary Chambers" <gazzaguru2@btinternet.com> wrote:
Hi Doru,
#spaceFill constraints are typically only used by table layouts. ScrollPane is designed for fixed size contents, at present. Might be nice to extend it to honour any #spaceFill of its single target morph. This would simplify usage of scrollers quite a bit!
Regards, Gary
----- Original Message ----- From: "Tudor Girba" <tudor.girba@gmail.com> To: "Pharo-project@lists.gforge.inria.fr Development" <pharo-project@lists.gforge.inria.fr> Sent: Saturday, January 08, 2011 1:22 AM Subject: [Pharo-project] aligning morphs
Hi,
I would need help with understanding the magic behind alignment in Morphic.
Take the example from below. Could anyone help me with what I should do to have the morph stretch all the way horizontally?
| scroll window morph | scroll := ScrollPane new. scroll fillStyle: (SolidFillStyle color: Color blue); vResizing: #spaceFill; hResizing: #spaceFill. morph := PanelMorph new. morph fillStyle: (SolidFillStyle color: Color yellow); changeTableLayout; listDirection: #topToBottom; vResizing: #shrinkWrap; hResizing: #spaceFill; layoutInset: 10. morph addMorphBack: (SimpleButtonMorph new width: 200; height: 200). scroll scroller addMorph: morph. window := SystemWindow new. window addMorph: scroll fullFrame: (LayoutFrame fractions: (0 @ 0 corner: 1 @ 1)). window openInWorld
Cheers, Doru
-- www.tudorgirba.com
"Every thing should have the right to be different."
-- www.tudorgirba.com
"Problem solving efficiency grows with the abstractness level of problem understanding."
<GeneralScrollPaneLayout.1.cs>
-- www.tudorgirba.com
"Some battles are better lost than fought."
<GeneralScrollPaneLayout.2.cs>
-- www.tudorgirba.com "In a world where everything is moving ever faster, one might have better chances to win by moving slower."