On 02.11.2010, at 13:19, Matthias Melcher wrote:
>
> On 01.11.2010, at 20:27, Greg Ercolano wrote:
>
>> Boris Mayer-St-Onge wrote:
>>> With FLTK 1.1.10 or one of 1.3.x snapshot (7677), I can't change the
>>> position of widgets Fl_Input and Fl_Output.
>>
>>      You can, you just have to beware of the name collision,
>>      and code accordingly.
>>
>>      We should have some clear docs that describe the collision,
>>      and how to work around it, at very least.
>>
>>> If we look into Fl_Widget and Fl_Input_, we can see that
>>> Fl_Widget::position(X,Y) is a shortcut to resize(X,Y,w(),h()) but in
>>> Fl_Input_, the function position(X,Y) is redefined and is more complicated.
>>
>>      Yes, there's a name collision for position();
>>      Fl_Input_::position() sets cursor position/text selection,
>>      Fl_Widget::position() sets the widget's X/Y position.
>>
>>      Definitely unfortunate API planning ;)
>
> I would like to change the API for Fl_Input. I have not found a good name 
> yet. Any suggestions welcome. We did the exact same thing for Fl_Scroll which 
> also overrode position(int, int)

Yes, we did change the API for Fl_Scroll, but IMHO this was a less
invasive change, because Fl_Scroll::position(int,int) to change the
scrollbar position was supposedly used much less. However, here we
would probably break more existing code than with the Fl_Scroll
change (also taking into account that we did the Fl_Scroll change
early in fltk 1.3 development), but now I guess that we have fltk 1.3
code in use, maybe even in production environments.

That said, I agree that we should change the API, but I would like
to keep the old function as a compatibility wrapper for a while,
as Greg also suggested.

IMHO we should add a new method, document that the old method
is deprecated, and remove it in the following release after 1.3.x,
i.e. 1.4 or 3.0.

We have (with comments from the doxygen docs):

position() - Gets the position of the text cursor.

position(int) - Set the cursor position and mark.
   position(n) is the same as position(n, n).

position(int,int) - Sets the index for the cursor and mark.

and:

mark() - Gets the current selection mark.
mark(int) - Sets the current selection mark.

Method name proposals to replace position(...):

  - cursor_position(...) or
  - text_position(...) or
  - insert_position(...)

Keeping in mind that position(int,int) also sets the selection
mark, my favorite is text_position(...), but they would all be
okay for me.

More comments/proposals?

Albrecht
_______________________________________________
fltk-dev mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-dev

Reply via email to