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" <[email protected]>
> To: <[email protected]>
> 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" <[email protected]>
>> To: <[email protected]>
>> 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" <[email protected]>
>>> To: <[email protected]>
>>> Cc: <[email protected]>
>>> 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" <[email protected]> 
>>> 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" <[email protected]>
>>>> To: "[email protected] Development" 
>>>> <[email protected]>
>>>> 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."




Reply via email to