* Model Browser: default bind '/'

m1 = assign model to selected entity nodes (shift + e to select nodes of group entities)
		m1x2 = insert "misc_model" with given model
		m1 drag = rotate model
		Preferences.Model Browser: list of * separated folderToLoad/depth values, e.g. *models/mapobjects/99*maps/1*; */99* loads root
This commit is contained in:
Garux
2020-04-26 07:28:23 +03:00
parent 49b725a1b2
commit 06cd1e98ff
12 changed files with 1547 additions and 39 deletions

View File

@@ -225,4 +225,46 @@ void unfreeze_pointer( GtkWindow* window, bool centerize ){
}
};
class DeferredAdjustment
{
gdouble m_value;
guint m_handler;
typedef void ( *ValueChangedFunction )( void* data, gdouble value );
ValueChangedFunction m_function;
void* m_data;
static gboolean deferred_value_changed( gpointer data ){
reinterpret_cast<DeferredAdjustment*>( data )->m_function(
reinterpret_cast<DeferredAdjustment*>( data )->m_data,
reinterpret_cast<DeferredAdjustment*>( data )->m_value
);
reinterpret_cast<DeferredAdjustment*>( data )->m_handler = 0;
reinterpret_cast<DeferredAdjustment*>( data )->m_value = 0;
return FALSE;
}
public:
DeferredAdjustment( ValueChangedFunction function, void* data ) : m_value( 0 ), m_handler( 0 ), m_function( function ), m_data( data ){
}
void flush(){
if ( m_handler != 0 ) {
g_source_remove( m_handler );
deferred_value_changed( this );
}
}
void value_changed( gdouble value ){
m_value = value;
if ( m_handler == 0 ) {
m_handler = g_idle_add( deferred_value_changed, this );
}
}
static void adjustment_value_changed( GtkAdjustment *adjustment, DeferredAdjustment* self ){
self->value_changed( adjustment->value );
}
};
#endif