diff --git a/contrib/prtview/ConfigDialog.cpp b/contrib/prtview/ConfigDialog.cpp index 6c95b47c..e8b17c96 100644 --- a/contrib/prtview/ConfigDialog.cpp +++ b/contrib/prtview/ConfigDialog.cpp @@ -54,26 +54,24 @@ static gint dialog_delete_callback( GtkWidget *widget, GdkEvent* event, gpointer static int DoColor( PackedColour *c ){ GtkWidget* dlg; - double clr[4]; + GdkColor clr = { 0, guint16( GetRValue( *c ) * ( 65535 / 255 ) ), + guint16( GetGValue( *c ) * ( 65535 / 255 ) ), + guint16( GetBValue( *c ) * ( 65535 / 255 ) ) }; int loop = 1, ret = IDCANCEL; - clr[0] = ( (double)GetRValue( *c ) ) / 255.0; - clr[1] = ( (double)GetGValue( *c ) ) / 255.0; - clr[2] = ( (double)GetBValue( *c ) ) / 255.0; - dlg = gtk_color_selection_dialog_new( "Choose Color" ); gtk_window_set_transient_for( GTK_WINDOW( dlg ), GTK_WINDOW( g_pRadiantWnd ) ); gtk_window_set_position( GTK_WINDOW( dlg ),GTK_WIN_POS_CENTER_ON_PARENT ); gtk_window_set_modal( GTK_WINDOW( dlg ), TRUE ); - gtk_color_selection_set_color( GTK_COLOR_SELECTION( GTK_COLOR_SELECTION_DIALOG( dlg )->colorsel ), clr ); - gtk_signal_connect( GTK_OBJECT( dlg ), "delete_event", - GTK_SIGNAL_FUNC( dialog_delete_callback ), NULL ); - gtk_signal_connect( GTK_OBJECT( dlg ), "destroy", - GTK_SIGNAL_FUNC( gtk_widget_destroy ), NULL ); - gtk_signal_connect( GTK_OBJECT( GTK_COLOR_SELECTION_DIALOG( dlg )->ok_button ), "clicked", - GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDOK ) ); - gtk_signal_connect( GTK_OBJECT( GTK_COLOR_SELECTION_DIALOG( dlg )->cancel_button ), "clicked", - GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDCANCEL ) ); + gtk_color_selection_set_current_color( GTK_COLOR_SELECTION( gtk_color_selection_dialog_get_color_selection( GTK_COLOR_SELECTION_DIALOG( dlg ) ) ), &clr ); + gtk_signal_connect( GTK_OBJECT( dlg ), "delete_event", G_CALLBACK( dialog_delete_callback ), NULL ); + gtk_signal_connect( GTK_OBJECT( dlg ), "destroy", G_CALLBACK( gtk_widget_destroy ), NULL ); + + GtkWidget *ok_button, *cancel_button; + g_object_get( G_OBJECT( dlg ), "ok-button", &ok_button, "cancel-button", &cancel_button, nullptr ); + + gtk_signal_connect( GTK_OBJECT( ok_button ), "clicked", G_CALLBACK( dialog_button_callback ), GINT_TO_POINTER( IDOK ) ); + gtk_signal_connect( GTK_OBJECT( cancel_button ), "clicked", G_CALLBACK( dialog_button_callback ), GINT_TO_POINTER( IDCANCEL ) ); g_object_set_data( G_OBJECT( dlg ), "loop", &loop ); g_object_set_data( G_OBJECT( dlg ), "ret", &ret ); @@ -83,13 +81,13 @@ static int DoColor( PackedColour *c ){ while ( loop ) gtk_main_iteration(); - gtk_color_selection_get_color( GTK_COLOR_SELECTION( GTK_COLOR_SELECTION_DIALOG( dlg )->colorsel ), clr ); + gtk_color_selection_get_current_color( GTK_COLOR_SELECTION( gtk_color_selection_dialog_get_color_selection( GTK_COLOR_SELECTION_DIALOG( dlg ) ) ), &clr ); gtk_grab_remove( dlg ); gtk_widget_destroy( dlg ); if ( ret == IDOK ) { - *c = RGB( clr[0] * 255, clr[1] * 255, clr[2] * 255 ); + *c = RGB( clr.red / (65535 / 255), clr.green / (65535 / 255), clr.blue / (65535 / 255) ); } return ret; diff --git a/radiant/gtkmisc.cpp b/radiant/gtkmisc.cpp index 1f0b26ba..e20b4d75 100644 --- a/radiant/gtkmisc.cpp +++ b/radiant/gtkmisc.cpp @@ -100,18 +100,18 @@ GtkToggleButton* toolbar_append_toggle_button( GtkToolbar* toolbar, const char* bool color_dialog( GtkWidget *parent, Vector3& color, const char* title ){ GtkWidget* dlg; - double clr[3]; + GdkColor clr = { 0, guint16( color[0] * 65535 ), + guint16( color[1] * 65535 ), + guint16( color[2] * 65535 ) }; ModalDialog dialog; - clr[0] = color[0]; - clr[1] = color[1]; - clr[2] = color[2]; - dlg = gtk_color_selection_dialog_new( title ); - gtk_color_selection_set_color( GTK_COLOR_SELECTION( GTK_COLOR_SELECTION_DIALOG( dlg )->colorsel ), clr ); + gtk_color_selection_set_current_color( GTK_COLOR_SELECTION( gtk_color_selection_dialog_get_color_selection( GTK_COLOR_SELECTION_DIALOG( dlg ) ) ), &clr ); g_signal_connect( G_OBJECT( dlg ), "delete_event", G_CALLBACK( dialog_delete_callback ), &dialog ); - g_signal_connect( G_OBJECT( GTK_COLOR_SELECTION_DIALOG( dlg )->ok_button ), "clicked", G_CALLBACK( dialog_button_ok ), &dialog ); - g_signal_connect( G_OBJECT( GTK_COLOR_SELECTION_DIALOG( dlg )->cancel_button ), "clicked", G_CALLBACK( dialog_button_cancel ), &dialog ); + GtkWidget *ok_button, *cancel_button; + g_object_get( G_OBJECT( dlg ), "ok-button", &ok_button, "cancel-button", &cancel_button, nullptr ); + g_signal_connect( G_OBJECT( ok_button ), "clicked", G_CALLBACK( dialog_button_ok ), &dialog ); + g_signal_connect( G_OBJECT( cancel_button ), "clicked", G_CALLBACK( dialog_button_cancel ), &dialog ); if ( parent != 0 ) { gtk_window_set_transient_for( GTK_WINDOW( dlg ), GTK_WINDOW( parent ) ); @@ -119,15 +119,10 @@ bool color_dialog( GtkWidget *parent, Vector3& color, const char* title ){ bool ok = modal_dialog_show( GTK_WINDOW( dlg ), dialog ) == eIDOK; if ( ok ) { - GdkColor gdkcolor; - gtk_color_selection_get_current_color( GTK_COLOR_SELECTION( GTK_COLOR_SELECTION_DIALOG( dlg )->colorsel ), &gdkcolor ); - clr[0] = gdkcolor.red / 65535.0; - clr[1] = gdkcolor.green / 65535.0; - clr[2] = gdkcolor.blue / 65535.0; - - color[0] = (float)clr[0]; - color[1] = (float)clr[1]; - color[2] = (float)clr[2]; + gtk_color_selection_get_current_color( GTK_COLOR_SELECTION( gtk_color_selection_dialog_get_color_selection( GTK_COLOR_SELECTION_DIALOG( dlg ) ) ), &clr ); + color[0] = clr.red / 65535.0; + color[1] = clr.green / 65535.0; + color[2] = clr.blue / 65535.0; } gtk_widget_destroy( dlg );