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 < [email protected]> 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 <[email protected]> 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 < > [email protected]> wrote: > >> ok :( >> Then I run out of brilliant idea :P >> >> >> Ben >> >> On 27 Dec 2013, at 15:25, Andrei Chis <[email protected]> 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 < >> [email protected]> 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 <[email protected]> >>> 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 >>> <[email protected]>wrote: >>> >>>> >>>> On 27 Dec 2013, at 13:01, Stéphane Ducasse <[email protected]> >>>> 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 >>>> >>>> >>>> >>> >>> >> >> > >
