PluggableTextMorph maintains its own selectionInterval.

When the PluggableTextMorph >>selectionInterval: it is called it sets the selection in the model.
This will trigger MorphicTextAdapter>>setSelectionFromModel: that should adapt the selection in the morph:
MorphicTextAdapter >>setSelectionFromModel: aSelection
self widget ifNotNil: [:w |�
w selectionInterval ~= aSelection ifTrue: [
w setSelection: aSelection ]].

However, the second test (w selectionInterval ~= aSelection) will always return false. This is because�
PluggableTextMorph>>selectionInterval has the following implementation�
�'^ textMorph editor selectionInterval'

And in the editor the selection is already correct (even before��PluggableTextMorph >>selectionInterval: is called).

Actually most of the methods from PluggableTextMorph that change the selection also explicitly update the
selectionInterval instance variable.

So the previous solution should work.

@Doru this is related with Spec, so we should not have it in Glamour.



On Fri, Dec 27, 2013 at 5:07 PM, Benjamin <Benjamin.VanRyseghem.Pharo@gmail.com> wrote:
I think that when the model is notified, it will set it in the morph
So it will happen twice

Ben

On 27 Dec 2013, at 15:52, Andrei Chis <chisvasileandrei@gmail.com> wrote:

Wouldn't then explicitly setting the selection of the morph before setting it in the model be ok?

PluggableTextMorph>>selectionInterval: sel
� � � � selectionInterval := sel.
setSelectionSelector
ifNotNil: [ self model perform:setSelectionSelector with: sel ]


On Fri, Dec 27, 2013 at 4:28 PM, Benjamin <Benjamin.VanRyseghem.Pharo@gmail.com> wrote:
ok :(
Then I run out of brilliant idea :P


Ben

On 27 Dec 2013, at 15:25, Andrei Chis <chisvasileandrei@gmail.com> wrote:

Adding 'self changed' at the end of the current�PluggableTextMorph>>selectionInterval: doesn't solve the problem.


On Fri, Dec 27, 2013 at 4:15 PM, Benjamin <Benjamin.VanRyseghem.Pharo@gmail.com> wrote:
Because when the focus changes, the morph is proposed to redraw itself
Try with a�

� � self changed

at the end

Ben

On 27 Dec 2013, at 14:44, Andrei Chis <chisvasileandrei@gmail.com> wrote:


The change that seems to have caused this problem is in PluggableTextMorph>>selectionInterval: The selectionInterval instance variable of the morph is not set any more; only the model is updated, which doesn't seem to update the morph.

PluggableTextMorph>>selectionInterval: sel
setSelectionSelector
ifNil: [ selectionInterval := sel ]
ifNotNil: [ self model perform:setSelectionSelector with: sel ]

This could be solved like bellow, though I'm not sure it is the best solution.�
If I put a halt in PluggableTextMorph >>inspectIt and hit proceed the the selection is inspected correctly, without this modification.

PluggableTextMorph>>selectionInterval: sel
� � � � selectionInterval := sel.
setSelectionSelector
ifNotNil: [ self model perform:setSelectionSelector with: sel ]





On Fri, Dec 27, 2013 at 3:11 PM, Marcus Denker <marcus.denker@inria.fr> wrote:

On 27 Dec 2013, at 13:01, St�phane Ducasse <stephane.ducasse@inria.fr> wrote:

> Hi guys
>
> we should not let the system in such state. We cannot inspect print expression in the debugger.
> Does anybody have an idea of the change that broke it?
>
Yes:

� � � � https://pharo.fogbugz.com/f/cases/12144/TextModel-getSelection

it was added in 655, so for reverting the easiest is to dl 654, do a merge and look at all the changes
(there are just 4-5 that are not re-catorizations).

This is on my TODO next�

� � � � Marcus