On 12.04.2013 19:44, Albrecht Schlosser wrote:
> On 12.04.2013 18:57, Greg Ercolano wrote:
>> Is there a reason as_window() and friends (other virtual
>> implementations) are not const methods? Fl_Window::window() is.
>
> You mean: "Fl_Window* Fl_Widget::window() const" is, right?
>
> Other than what ISTR (see above), I don't know. Probably
> "Fl_Window* Fl_Widget::window()" could be const as well, but
> can we change it w/o breaking the ABI?
Hmm, I'm not a "const and ABI specialist", I mean I don't know
all the implications that would arise if we changed this method.
That said, what about one additional method for each of these
that is const and returns a const pointer, like this patch:
Index: Fl_Widget.H
===================================================================
--- Fl_Widget.H (revision 9869)
+++ Fl_Widget.H (working copy)
@@ -964,6 +964,7 @@
\see Fl_Widget::as_group(), Fl_Widget::as_gl_window()
*/
virtual Fl_Window* as_window() {return 0;}
+ virtual const Fl_Window* as_window() const {return 0;}
/** Returns an Fl_Gl_Window pointer if this widget is an Fl_Gl_Window.
Index: Fl_Window.H
===================================================================
--- Fl_Window.H (revision 9869)
+++ Fl_Window.H (working copy)
@@ -459,6 +459,7 @@
// Note: Doxygen docs in Fl_Widget.H to avoid redundancy.
virtual Fl_Window* as_window() { return this; }
+ virtual const Fl_Window* as_window() const { return
const_cast<Fl_Window*>(this); }
/**
Changes the cursor for this window. This always calls the system, if
--- end of patch ---
This compiles well, but doesn't address all the siblings like as_group()
etc.
Note that I used const_cast that needs to be discussed as well.
Opinions anybody? Would this solve the problem? Would it break the ABI?
Other variants needed?
Albrecht
_______________________________________________
fltk-dev mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-dev