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 |
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 > > ------------------------------------------------------------------------ > > > |
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 |
Free forum by Nabble | Edit this page |