From 706fbc414b283d6ee36fd76fd9fb80ffbc2e132b Mon Sep 17 00:00:00 2001 From: mattn Date: Sun, 16 Mar 2008 16:05:36 +0000 Subject: [PATCH] * fixed ufoai surface plugin (don't give a stack variable pointer to the button callback function but a static array pointer) git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/ZeroRadiant@213 8a3a26a2-13c4-0310-b231-cf6edde360e5 --- .../surfaceflagsdialog_ufoai.cpp | 42 ++++++++++++++++--- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/plugins/surface_ufoai/surfaceflagsdialog_ufoai.cpp b/plugins/surface_ufoai/surfaceflagsdialog_ufoai.cpp index d8febe48..687af055 100644 --- a/plugins/surface_ufoai/surfaceflagsdialog_ufoai.cpp +++ b/plugins/surface_ufoai/surfaceflagsdialog_ufoai.cpp @@ -340,6 +340,41 @@ static const char *contentFlags[] = { "" }; +static const int flagBitMasks[] = { + 1<<0, + 1<<1, + 1<<2, + 1<<3, + 1<<4, + 1<<5, + 1<<6, + 1<<7, + 1<<8, + 1<<9, + 1<<10, + 1<<11, + 1<<12, + 1<<13, + 1<<14, + 1<<15, + 1<<16, + 1<<17, + 1<<18, + 1<<19, + 1<<20, + 1<<21, + 1<<22, + 1<<23, + 1<<24, + 1<<25, + 1<<26, + 1<<27, + 1<<28, + 1<<29, + 1<<30, + 1<<31, +}; + #define UFOAI_FLAG_BUTTON_BORDER 3 GtkWidget* Create_UFOAIFlagsDialog (GtkWidget* surfacedialog_widget) @@ -357,7 +392,6 @@ GtkWidget* Create_UFOAIFlagsDialog (GtkWidget* surfacedialog_widget) GtkWidget *label5; GtkWidget *table3; GtkWidget *label6; - int flag = 0; int i, x, y; frame1 = gtk_frame_new ("Flags"); @@ -387,9 +421,8 @@ GtkWidget* Create_UFOAIFlagsDialog (GtkWidget* surfacedialog_widget) if (!(i % 4)) y++; x = i % 4; - flag = (1 << i); surface_buttons[i] = gtk_toggle_button_new_with_label (surfaceFlags[i]); - gtk_signal_connect(GTK_OBJECT (surface_buttons[i]), "toggled", GTK_SIGNAL_FUNC(on_surface_button_toggled), &flag); + gtk_signal_connect(GTK_OBJECT (surface_buttons[i]), "toggled", GTK_SIGNAL_FUNC(on_surface_button_toggled), &flagBitMasks[i]); gtk_widget_show(surface_buttons[i]); gtk_table_attach(GTK_TABLE (table4), surface_buttons[i], 0 + x, 1 + x, (0 + y), (1 + y), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), @@ -446,9 +479,8 @@ GtkWidget* Create_UFOAIFlagsDialog (GtkWidget* surfacedialog_widget) if (!(i % 4)) y++; x = i % 4; - flag = (1 << i); content_buttons[i] = gtk_toggle_button_new_with_label(contentFlags[i]); - gtk_signal_connect(GTK_OBJECT (content_buttons[i]), "toggled", GTK_SIGNAL_FUNC (on_content_button_toggled), &flag); + gtk_signal_connect(GTK_OBJECT (content_buttons[i]), "toggled", GTK_SIGNAL_FUNC (on_content_button_toggled), &flagBitMasks[i]); gtk_widget_show(content_buttons[i]); gtk_table_attach(GTK_TABLE (table3), content_buttons[i], 0 + x, 1 + x, (0 + y), (1 + y), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),