File indexing completed on 2024-05-12 17:05:49

0001 #ifndef oxygenscrollbarengine_h
0002 #define oxygenscrollbarengine_h
0003 /*
0004 * this file is part of the oxygen gtk engine
0005 * SPDX-FileCopyrightText: 2010 Hugo Pereira Da Costa <hugo.pereira@free.fr>
0006 *
0007 * SPDX-License-Identifier: LGPL-2.0-or-later
0008 */
0009 
0010 
0011 #include "oxygengenericengine.h"
0012 #include "oxygendatamap.h"
0013 #include "oxygenscrollbardata.h"
0014 
0015 #include <gtk/gtk.h>
0016 
0017 namespace Oxygen
0018 {
0019     //! forward declaration
0020     class Animations;
0021 
0022     //! stores data associated to editable scrollbares
0023     /*!
0024     ensures that the text entry and the button of editable scrollbares
0025     gets hovered and focus flags at the same time
0026     */
0027     class ScrollBarEngine: public GenericEngine<ScrollBarData>
0028     {
0029 
0030         public:
0031 
0032         //! constructor
0033         ScrollBarEngine( Animations* widget ):
0034             GenericEngine<ScrollBarData>( widget )
0035             {}
0036 
0037         //! destructor
0038         virtual ~ScrollBarEngine( void )
0039         {}
0040 
0041         //! register scrollbar from scrolled window
0042         inline void registerScrolledWindow( GtkWidget* );
0043 
0044     };
0045 
0046     //________________________________________________________________
0047     void ScrollBarEngine::registerScrolledWindow( GtkWidget* widget )
0048     {
0049         if( !GTK_IS_SCROLLED_WINDOW( widget ) ) return;
0050         GtkScrolledWindow* scrolledWindow( GTK_SCROLLED_WINDOW( widget ) );
0051 
0052         if( GtkWidget* hScrollBar = gtk_scrolled_window_get_hscrollbar( scrolledWindow ) )
0053         { registerWidget( hScrollBar ); }
0054 
0055         if( GtkWidget* vScrollBar = gtk_scrolled_window_get_vscrollbar( scrolledWindow ) )
0056         { registerWidget( vScrollBar ); }
0057 
0058         return;
0059     }
0060 
0061 }
0062 
0063 #endif