File indexing completed on 2024-05-12 05:34:35
0001 #ifndef oxygenscrollbardata_h 0002 #define oxygenscrollbardata_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 #include "oxygensignal.h" 0011 #include "oxygentimer.h" 0012 0013 #include <gtk/gtk.h> 0014 0015 namespace Oxygen 0016 { 0017 // track scrollbars 0018 class ScrollBarData 0019 { 0020 0021 public: 0022 0023 //! constructor 0024 ScrollBarData( void ): 0025 _target( 0L ), 0026 _updatesDelayed( false ), 0027 _delay( 10 ), 0028 _locked( false ) 0029 {} 0030 0031 //! destructor 0032 virtual ~ScrollBarData( void ) 0033 { disconnect( _target ); } 0034 0035 //! setup connections 0036 void connect( GtkWidget* ); 0037 0038 //! disconnect 0039 void disconnect( GtkWidget* ); 0040 0041 //! toggle delayed updates 0042 void setUpdatesDelayed( bool value ) 0043 { _updatesDelayed = value; } 0044 0045 //! set delay 0046 void setDelay( int value ) 0047 { _delay = value; } 0048 0049 protected: 0050 0051 static void valueChanged( GtkRange*, gpointer ); 0052 0053 //! delayed update 0054 static gboolean delayedUpdate( gpointer ); 0055 0056 private: 0057 0058 //! pointer to associated widget 0059 GtkWidget* _target; 0060 0061 //! true if updates are delayed 0062 bool _updatesDelayed; 0063 0064 //! update delay 0065 int _delay; 0066 0067 //! timer 0068 Timer _timer; 0069 0070 //! true if next update must be delayed 0071 bool _locked; 0072 0073 //! signal 0074 Signal _valueChangedId; 0075 0076 }; 0077 0078 } 0079 0080 #endif