[Cuis-dev] Modal morph

Hilaire Fernandes hilaire at drgeo.eu
Thu Mar 3 01:34:58 PST 2022


A few weeks ago I posted about how to make a DropDownListMorph modal. I 
fixed the issue by borrowing the code from popup menu (it is modal 

So to pop up my drop down list of morph, I have this method:

PluggableDropDownListOfMorph>>popUpAt: position forHand: hand in: aWorld 
     aWorld addMorphFront: self position: position.     self fitInWorld. 
     prevKbdFocus _ hand keyboardFocus.     prevMouseFocus _ hand 
mouseFocus.     hand newMouseFocus: self;         newKeyboardFocus: self

The modal behavior is perfectly achieved. However, the scroll morph in 
the list morph does not receive event anymore (but it is part of the . 
Observe on the screenshot below, the scrollbar is not highlight how it 
should be:

When I click on the scroll bar, the event is directed to the list of 
morphs (colored boxes), of course it produces an error as it does not 
match with any morph of the list (colored boxes). So I edit a bit the 
method below to handle the mouse up button event. Now It makes the 
scrollbar slider and buttons inoperable by the user, only it can be 
controlled with the mouse scrolling wheel button.

The related mouse button up event is handled as:

mouseButton1Up: aMouseButtonEvent localPosition: localEventPosition
	"Handle a mouse up event."
	(self includesPixel: aMouseButtonEvent eventPosition)
		ifFalse: [
			self deleteIfPopUp: aMouseButtonEvent.
			self activeHand
				newKeyboardFocus: prevKbdFocus;
				newMouseFocus: prevMouseFocus.
			^ self ].
	"No click outside, handle normally"
	(scrollBar 	includesPixel: aMouseButtonEvent eventPosition)
		ifTrue: [scrollBar mouseButton1Up: aMouseButtonEvent localPosition: localEventPosition]
		ifFalse: [super mouseButton1Up: aMouseButtonEvent localPosition: localEventPosition].
	aMouseButtonEvent hand newMouseFocus: self

A workable solution is to override mouseButtonXUp: methods to set back 
the focus and to dispatch manualy the mouse event to the scrollbar. It 
is a bit overkill. I don't know how to handle the situation more properly.



GNU Dr. Geo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20220303/58bf62fa/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: FocusAndNoFocus.png
Type: image/png
Size: 12223 bytes
Desc: not available
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20220303/58bf62fa/attachment-0001.png>

More information about the Cuis-dev mailing list