File indexing completed on 2024-05-19 16:37:44

0001 /*
0002     this file is part of the oxygen gtk engine
0003     SPDX-FileCopyrightText: 2010 Hugo Pereira Da Costa <hugo.pereira@free.fr>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #include "oxygenwidgetstateengine.h"
0009 
0010 namespace Oxygen
0011 {
0012 
0013     //________________________________________________________
0014     bool WidgetStateEngine::registerWidget( GtkWidget* widget, AnimationModes modes, const StyleOptions& options )
0015     {
0016 
0017         #if OXYGEN_DEBUG
0018         std::cerr
0019             << "Oxygen::WidgetStateEngine::registerWidget - "
0020             << widget << " (" << G_OBJECT_TYPE_NAME( widget ) << ")"
0021             << " mode: " << modes
0022             << std::endl;
0023         #endif
0024 
0025         bool registered( false );
0026         if( (modes&AnimationHover) && registerWidget( widget, _hoverData, (options&Hover)&&!(options&Disabled) ) ) registered = true;
0027         if( (modes&AnimationFocus) && registerWidget( widget, _focusData, (options&Focus)&&!(options&Disabled) ) ) registered = true;
0028 
0029         if( registered )
0030         { BaseEngine::registerWidget( widget ); }
0031 
0032         return registered;
0033 
0034     }
0035 
0036     //________________________________________________________
0037     bool WidgetStateEngine::registerWidget( GtkWidget* widget, DataMap<WidgetStateData>& dataMap, const bool& state ) const
0038     {
0039 
0040         if( dataMap.contains( widget ) ) return false;
0041 
0042         WidgetStateData& data( dataMap.registerWidget( widget ) );
0043         data.setEnabled( enabled() );
0044         data.updateState( state );
0045         data.setDuration( duration() );
0046 
0047         /*
0048         blacklist some applications based on name and widget
0049         the widget is effectively registered, but not connected
0050         */
0051         if( widgetIsBlackListed( widget ) ) return true;
0052 
0053         // connect
0054         if( enabled() ) data.connect( widget );
0055 
0056         return true;
0057 
0058     }
0059 
0060 }