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

0001 #ifndef oxygentreeviewengine_h
0002 #define oxygentreeviewengine_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 * SPDX-FileCopyrightText: 2010 Ruslan Kabatsayev <b7.10110111@gmail.com>
0007 *
0008 * SPDX-License-Identifier: LGPL-2.0-or-later
0009 */
0010 
0011 #include "oxygengenericengine.h"
0012 #include "oxygendatamap.h"
0013 #include "oxygentreeviewdata.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 comboboxes
0023     /*!
0024     ensures that the text entry and the button of editable comboboxes
0025     gets hovered and focus flags at the same time
0026     */
0027     class TreeViewEngine: public GenericEngine<TreeViewData>
0028     {
0029 
0030         public:
0031 
0032         //! constructor
0033         TreeViewEngine( Animations* );
0034 
0035         //! destructor
0036         virtual ~TreeViewEngine( void );
0037 
0038         //! register widget
0039         virtual bool registerWidget( GtkWidget* );
0040 
0041         //! true if widget is hovered
0042         bool hovered( GtkWidget* widget )
0043         { return data().value( widget ).hovered(); }
0044 
0045         //! true if treeview data is dirty
0046         bool isDirty( GtkWidget* widget )
0047         { return data().value( widget ).isDirty(); }
0048 
0049         //! update hovered cell for given widget
0050         void updateHoveredCell( GtkWidget* widget )
0051         { return data().value( widget ).updateHoveredCell(); }
0052 
0053         //! true if given cell is hovered
0054         bool isCellHovered( GtkWidget* widget, const Gtk::CellInfo& info )
0055         { return data().value( widget ).isCellHovered( info ); }
0056 
0057         bool isCellHovered( GtkWidget* widget, const Gtk::CellInfo& info, bool fullWidth )
0058         { return data().value( widget ).isCellHovered( info, fullWidth ); }
0059 
0060         private:
0061 
0062         //! cursor
0063         bool _cursorLoaded;
0064         GdkCursor* _cursor;
0065     };
0066 
0067 }
0068 
0069 #endif