comeToFront

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

comeToFront

Trygve
Squeak3.10beta.7143

I have a DemoWindow, sco PasteUpMorph.
The DemoWindow opens on top.
I open a Browser, it masks part of  the DemoWindow.
I click the DemoWindow , but have to move it to make it go on top.
The browser doesn't go on top if I click inside it, I have to click its border (move it).

I set the demo window option "resist being picked up".
It is now hard to make the demo window go on top, so I add the following method:

    DemoWindow >>mouseDown: evt
        evt yellowButtonPressed  ifTrue: [^ self yellowButtonActivity: evt shiftPressed].
        self eventHandler ifNotNil: [self eventHandler mouseDown: evt fromMorph: self].
        self comeToFront.

Now the DemoWindow goes on top when I click it (as it should).
But the only way to make the Browser go on top is to click its border (move it).

I have also tried 'evt hand newKeyboardFocus: self.' with the same result.
'self activate' doesn't work on a Morph (but it works on a SystemWindow)

What's happening?

Cheers
--Trygve

PS
I have looked at the excellent documentation in 'Squeak by Example' and 'A GUIDE TO WORK WITH
SQUEAK MORPH CLASSES
', and 'An Introduction to Morphic: The Squeak User Interface Framework' without finding an answer. I have also tried to google, but have not found anything written by people who knew what was happening.



-- 

Trygve Reenskaug      mailto: [hidden email]
Morgedalsvn. 5A       http://folk.uio.no/trygver
N-0378 Oslo           Tel: (+47) 22 49 57 27
Norway 
 


Reply | Threaded
Open this post in threaded view
|

Re: comeToFront

Karl-19
Ah, the dreadful SystemWindow internals ;-)
SystemWindows>>mouseDown: evt

    | outerMorph |
    self setProperty: #clickPoint toValue: evt cursorPoint.
    TopWindow == self ifFalse:
        [evt hand releaseKeyboardFocus.
        self activate].

The top window will not activate if it is the top window...
There could be a check to see if it was the front most morph as well I
guess.

Karl


Trygve Reenskaug wrote:

> Squeak3.10beta.7143
>
> I have a DemoWindow, sco PasteUpMorph.
> The DemoWindow opens on top.
> I open a Browser, it masks part of  the DemoWindow.
> I click the DemoWindow , but have to move it to make it go on top.
> The browser doesn't go on top if I click inside it, I have to click
> its border (move it).
>
> I set the demo window option "resist being picked up".
> It is now hard to make the demo window go on top, so I add the
> following method:
>
>     DemoWindow >>mouseDown: evt
>         evt yellowButtonPressed  ifTrue: [^ self yellowButtonActivity:
> evt shiftPressed].
>         self eventHandler ifNotNil: [self eventHandler mouseDown: evt
> fromMorph: self].
>         self comeToFront.
>
> Now the DemoWindow goes on top when I click it (as it should).
> But the only way to make the Browser go on top is to click its border
> (move it).
>
> I have also tried /'evt hand newKeyboardFocus: self.'/ with the same
> result.
> /'self activate'/ doesn't work on a Morph (but it works on a SystemWindow)
>
> What's happening?
>
> Cheers
> --Trygve
>
> PS
> I have looked at the excellent documentation in '/Squeak by Example/'
> and '/A GUIDE TO WORK WITH
> SQUEAK MORPH CLASSES/', and '/An Introduction to Morphic: The Squeak
> User Interface Framework/' without finding an answer. I have also
> tried to google, but have not found anything written by people who
> knew what was happening.
>
>
>
> --
>
> Trygve Reenskaug      mailto: [hidden email]
> Morgedalsvn. 5A       http://folk.uio.no/trygver
> N-0378 Oslo           Tel: (+47) 22 49 57 27
> Norway
>  
> ------------------------------------------------------------------------
>
>
>  


Reply | Threaded
Open this post in threaded view
|

Re: comeToFront

Trygve
Thanks Karl. I quickly wrote a hack and observed that it works in at
least one case....
Haven't the knowledge nor the time to make a firm bug fix proposal.

I replaced 'TopWindow == self ifFalse: ' in the
SystemWindows>>mouseDown: with:
    ((w := self world) notNil and: [w firstSubmorph == self]) ifFalse:
I have no idea if it is safe to ignore TopWindow here.

Cheers
--Trygve

On 12.11.2007 14:02, Karl wrote:

> Ah, the dreadful SystemWindow internals ;-)
> SystemWindows>>mouseDown: evt
>
>    | outerMorph |
>    self setProperty: #clickPoint toValue: evt cursorPoint.
>    TopWindow == self ifFalse:
>        [evt hand releaseKeyboardFocus.
>        self activate].
>
> The top window will not activate if it is the top window...
> There could be a check to see if it was the front most morph as well I
> guess.
>
> Karl
>
>
> Trygve Reenskaug wrote:
>> Squeak3.10beta.7143
>>
>> I have a DemoWindow, sco PasteUpMorph.
>> The DemoWindow opens on top.
>> I open a Browser, it masks part of  the DemoWindow.
>> I click the DemoWindow , but have to move it to make it go on top.
>> The browser doesn't go on top if I click inside it, I have to click
>> its border (move it).
>>
>> I set the demo window option "resist being picked up".
>> It is now hard to make the demo window go on top, so I add the
>> following method:
>>
>>     DemoWindow >>mouseDown: evt
>>         evt yellowButtonPressed  ifTrue: [^ self
>> yellowButtonActivity: evt shiftPressed].
>>         self eventHandler ifNotNil: [self eventHandler mouseDown: evt
>> fromMorph: self].
>>         self comeToFront.
>>
>> Now the DemoWindow goes on top when I click it (as it should).
>> But the only way to make the Browser go on top is to click its border
>> (move it).
>>
>> I have also tried /'evt hand newKeyboardFocus: self.'/ with the same
>> result.
>> /'self activate'/ doesn't work on a Morph (but it works on a
>> SystemWindow)
>>
>> What's happening?
>>
>> Cheers
>> --Trygve
>>
>> PS
>> I have looked at the excellent documentation in '/Squeak by Example/'
>> and '/A GUIDE TO WORK WITH
>> SQUEAK MORPH CLASSES/', and '/An Introduction to Morphic: The Squeak
>> User Interface Framework/' without finding an answer. I have also
>> tried to google, but have not found anything written by people who
>> knew what was happening.

--

Trygve Reenskaug      mailto: [hidden email]
Morgedalsvn. 5A       http://folk.uio.no/trygver
N-0378 Oslo           Tel: (+47) 22 49 57 27
Norway