From ea31edb2410308b4f610a027086c7b6f5ee72e1a Mon Sep 17 00:00:00 2001 From: Albrecht Schlosser Date: Sat, 13 Feb 2010 12:25:58 +0000 Subject: Added new virtual methods, as discussed in fltk.development: virtual Fl_Group* Fl_Widget::as_group() const virtual Fl_Window* Fl_Widget::as_window() const Todo: documentation is not yet complete. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@7074 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- FL/Fl_Group.H | 8 ++++++++ FL/Fl_Widget.H | 16 ++++++++++++++++ FL/Fl_Window.H | 8 ++++++++ 3 files changed, 32 insertions(+) diff --git a/FL/Fl_Group.H b/FL/Fl_Group.H index 941951cbf..7e1630d0b 100644 --- a/FL/Fl_Group.H +++ b/FL/Fl_Group.H @@ -176,6 +176,14 @@ public: */ unsigned int clip_children() { return (flags() & CLIP_CHILDREN) != 0; } + /** Returns an Fl_Group pointer if this widget is an Fl_Group. + + \retval NULL if this widget is not derived from Fl_Group. + \note This method is provided to avoid dynamic_cast. + \todo More documentation ... + */ + virtual Fl_Group* as_group() const { return (Fl_Group*)this; } + // back compatibility functions: /** diff --git a/FL/Fl_Widget.H b/FL/Fl_Widget.H index 94591107e..95351f9f2 100644 --- a/FL/Fl_Widget.H +++ b/FL/Fl_Widget.H @@ -924,6 +924,22 @@ public: */ Fl_Window* window() const ; + /** Returns an Fl_Group pointer if this widget is an Fl_Group. + + \retval NULL if this widget is not derived from Fl_Group. + \note This method is provided to avoid dynamic_cast. + \todo More documentation ... + */ + virtual Fl_Group* as_group() const {return 0;} + + /** Returns an Fl_Window pointer if this widget is an Fl_Window. + + \retval NULL if this widget is not derived from Fl_Window. + \note This method is provided to avoid dynamic_cast. + \todo More documentation ... + */ + virtual Fl_Window* as_window() const {return 0;} + /** For back compatibility only. \deprecated Use selection_color() instead. */ diff --git a/FL/Fl_Window.H b/FL/Fl_Window.H index 2b7fdf84a..b2430e958 100644 --- a/FL/Fl_Window.H +++ b/FL/Fl_Window.H @@ -415,6 +415,14 @@ public: */ void make_current(); + /** Returns an Fl_Window pointer if this widget is an Fl_Window. + + \retval NULL if this widget is not derived from Fl_Window. + \note This method is provided to avoid dynamic_cast. + \todo More documentation ... + */ + virtual Fl_Window* as_window() const { return (Fl_Window*)this; } + // for back-compatibility only: /** Changes the cursor for this window. This always calls the system, if -- cgit v1.2.3