From 30286e10a1d68d607a8ef69012e5223c8f15857a Mon Sep 17 00:00:00 2001 From: Pan7 Date: Tue, 7 Mar 2017 08:51:12 +0100 Subject: [PATCH] Arbitrary rotation, apply on enter key press --- radiant/gtkdlgs.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/radiant/gtkdlgs.cpp b/radiant/gtkdlgs.cpp index 44778059..d31ee529 100644 --- a/radiant/gtkdlgs.cpp +++ b/radiant/gtkdlgs.cpp @@ -1687,6 +1687,11 @@ static void rotatedlg_apply( GtkWidget *widget, gpointer data ){ gtk_spin_button_set_value( GTK_SPIN_BUTTON( spin ), 0.0f ); } +static void rotatedialog_activate( GtkWidget *widget, gpointer data ){ + GtkWidget *dialog = (GtkWidget *)data; + rotatedlg_apply( dialog, dialog ); +} + void DoRotateDlg(){ GtkWidget *dlg, *hbox, *vbox, *table, *label, *button; GtkWidget *x, *y, *z; @@ -1734,6 +1739,7 @@ void DoRotateDlg(){ adj = gtk_adjustment_new( 0, -359, 359, 1, 10, 0 ); x = gtk_spin_button_new( GTK_ADJUSTMENT( adj ), 1, 0 ); + gtk_spin_button_set_numeric( GTK_SPIN_BUTTON( x ), TRUE ); g_object_set_data( G_OBJECT( dlg ), "x", x ); gtk_widget_show( x ); gtk_table_attach( GTK_TABLE( table ), x, 1, 2, 0, 1, @@ -1741,24 +1747,32 @@ void DoRotateDlg(){ (GtkAttachOptions) ( 0 ), 0, 0 ); gtk_widget_set_usize( x, 60, -2 ); gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( x ), TRUE ); + g_signal_connect_after( x, "activate", G_CALLBACK( rotatedialog_activate ), dlg ); + g_object_set( x, "xalign", 1.0, NULL ); //right align numbers adj = gtk_adjustment_new( 0, -359, 359, 1, 10, 0 ); y = gtk_spin_button_new( GTK_ADJUSTMENT( adj ), 1, 0 ); + gtk_spin_button_set_numeric( GTK_SPIN_BUTTON( y ), TRUE ); g_object_set_data( G_OBJECT( dlg ), "y", y ); gtk_widget_show( y ); gtk_table_attach( GTK_TABLE( table ), y, 1, 2, 1, 2, (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions) ( 0 ), 0, 0 ); gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( y ), TRUE ); + g_signal_connect_after( y, "activate", G_CALLBACK( rotatedialog_activate ), dlg ); + g_object_set( y, "xalign", 1.0, NULL ); //right align numbers adj = gtk_adjustment_new( 0, -359, 359, 1, 10, 0 ); z = gtk_spin_button_new( GTK_ADJUSTMENT( adj ), 1, 0 ); + gtk_spin_button_set_numeric( GTK_SPIN_BUTTON( z ), TRUE ); g_object_set_data( G_OBJECT( dlg ), "z", z ); gtk_widget_show( z ); gtk_table_attach( GTK_TABLE( table ), z, 1, 2, 2, 3, (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions) ( 0 ), 0, 0 ); gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( z ), TRUE ); + g_signal_connect_after( z, "activate", G_CALLBACK( rotatedialog_activate ), dlg ); + g_object_set( z, "xalign", 1.0, NULL ); //right align numbers vbox = gtk_vbox_new( FALSE, 5 ); gtk_widget_show( vbox );