@@ -49,7 +49,7 @@ static const int matrixview_max_height = 10;
49
49
50
50
/* Show a matrix with fixed-width columns.
51
51
*/
52
- static const int matrixview_column_width = 75 ;
52
+ static const int matrixview_column_width = 70 ;
53
53
54
54
/* Limit number of sub-widgets with this ... could be prefs?
55
55
*/
@@ -439,26 +439,40 @@ matrixview_liststore_new( MatrixValue *matrixvalue )
439
439
}
440
440
441
441
static void
442
- matrixview_edited ( GtkCellRendererText * renderer ,
442
+ matrixview_edited_cb ( GtkCellRendererText * renderer ,
443
443
char * path , char * new_text , void * user_data )
444
444
{
445
445
Matrixview * matrixview = MATRIXVIEW ( user_data );
446
446
GtkTreeModel * tree = GTK_TREE_MODEL ( matrixview -> store );
447
447
GtkTreeIter iter ;
448
448
449
449
if ( gtk_tree_model_get_iter_from_string ( tree , & iter , path ) ) {
450
- int x = GPOINTER_TO_INT ( g_object_get_data (
450
+ int col = GPOINTER_TO_INT ( g_object_get_data (
451
451
G_OBJECT ( renderer ), "nip2_column_num" ) );
452
452
453
453
gtk_list_store_set ( GTK_LIST_STORE ( tree ), & iter ,
454
- x , atof ( new_text ),
454
+ col , atof ( new_text ),
455
455
-1 );
456
456
457
457
view_scannable_register ( VIEW ( matrixview ) );
458
458
symbol_recalculate_all ();
459
459
}
460
460
}
461
461
462
+ static void
463
+ matrixview_cell_data_cb ( GtkTreeViewColumn * tree_column , GtkCellRenderer * cell ,
464
+ GtkTreeModel * tree , GtkTreeIter * iter , void * data )
465
+ {
466
+ int col = GPOINTER_TO_INT ( g_object_get_data (
467
+ G_OBJECT ( cell ), "nip2_column_num" ) );
468
+ double d ;
469
+ char buf [256 ];
470
+
471
+ gtk_tree_model_get ( tree , iter , col , & d , -1 );
472
+ vips_snprintf ( buf , 256 , "%g" , d );
473
+ g_object_set ( cell , "text" , buf , NULL );
474
+ }
475
+
462
476
/* Build a set of text items for a matrix.
463
477
*/
464
478
static void
@@ -489,7 +503,7 @@ matrixview_text_build( Matrixview *matrixview )
489
503
g_object_set_data ( G_OBJECT ( renderer ),
490
504
"nip2_column_num" , GINT_TO_POINTER ( i ) );
491
505
g_signal_connect ( G_OBJECT ( renderer ), "edited" ,
492
- G_CALLBACK ( matrixview_edited ), matrixview );
506
+ G_CALLBACK ( matrixview_edited_cb ), matrixview );
493
507
494
508
column = gtk_tree_view_column_new ();
495
509
gtk_tree_view_column_set_sizing ( column ,
@@ -502,6 +516,8 @@ matrixview_text_build( Matrixview *matrixview )
502
516
gtk_tree_view_column_set_attributes ( column , renderer ,
503
517
"text" , i ,
504
518
NULL );
519
+ gtk_tree_view_column_set_cell_data_func ( column , renderer ,
520
+ matrixview_cell_data_cb , NULL , NULL );
505
521
gtk_tree_view_append_column ( GTK_TREE_VIEW ( matrixview -> sheet ),
506
522
column );
507
523
}
0 commit comments