FWIW, if we just rename the Fl_Input method then existing code that uses 
position(start,end) will have a very visible effect when the program is run. 
Also, the "get" method would be changed so that would catch a lot of old usage 
as well.

Another off-the-wall suggestion: just change the Fl_Widget position() method 
name to "reposition()". I'm guessing Fl_Widget::position is used less often 
than Fl_Input::position (I might have used Fl_Widget::position once in all the 
time I used FLTK...), and then there is no conflict.

On Nov 3, 2010, at 7:32 AM, Matthias Melcher wrote:

> 
> On 03.11.2010, at 13:03, Albrecht Schlosser wrote:
> 
>> 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(...)
> 
> So position() with two arguments (assuming they are not equal) actually sets 
> the primary selection. So maybe 
> 
> select(from, to) 
> 
> would be the right name.
> 
> In gcc, we can mark the Fl_Input_ funciton as deprecated. But then we would 
> also get the warning for correct usage.
> 
> Hmmmm.
> 
> Matthis
> 
> _______________________________________________
> fltk-dev mailing list
> [email protected]
> http://lists.easysw.com/mailman/listinfo/fltk-dev

________________________________________
Michael Sweet, Easy Software Products

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

Reply via email to