Login  Register

Re: [Demo] Creating Bloc Widgets with Pharo

Posted by Stephan Eggermont-3 on Sep 29, 2017; 9:28am
URL: https://forum.world.st/Demo-Creating-Bloc-Widgets-with-Pharo-tp4973602p4973796.html

On 29/09/17 00:51, Igor Stasenko wrote:
> Stephan , you said you cannot replace the last one in the video.
> I think you can have an easy solution: you should treat a pane that you
> are currently over - the one you are going to replace, so if you drag
> over something which is not placeholder,
> then it should automatically be shifted and replaced by placeholder.

Thanks.

This works. I forgot that there is always one more dropping place
possible than there are elements

dragEvent: anEvent
        | dragOver |
        anEvent consumed: true.
        dragOver := inspector children first.
        inspector childrenDo: [ :c |
                c boundsInSpace center y < (anEvent position y + dragOffset y) ifTrue: [
                        dragOver := c ] ].
        (dragOver ~= placeHolder ) ifTrue: [
                (inspector childIndexOf: placeHolder) > 0 ifTrue: [inspector
removeChild: placeHolder].
                inspector children last boundsInSpace bottom < (anEvent position y +
dragOffset y) ifTrue: [
                        inspector addChild: placeHolder at: (1+(inspector childIndexOf:
dragOver))]
                ifFalse: [
  inspector addChild: placeHolder at: (inspector childIndexOf:
dragOver)]].
   anEvent currentTarget position: (anEvent position - dragOffset).