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 }