- // don't show more than maxLines or we could get a dialog too tall to be
- // shown on screen: 20 should be ok everywhere as even with 15 pixel high
- // characters it is still only 300 pixels...
- static const int maxLines = 20;
-
- // save current stack frame...
- StackDump dump(GTK_ASSERT_DIALOG(dialog));
- dump.SaveStack(maxLines);
-
- // ...but process it only if the user needs it
- gtk_assert_dialog_set_backtrace_callback(GTK_ASSERT_DIALOG(dialog),
- (GtkAssertDialogStackFrameCallback)get_stackframe_callback,
- &dump);
-#endif // wxUSE_STACKWALKER
-
- gint result = gtk_dialog_run(GTK_DIALOG (dialog));
- bool returnCode = false;
- switch (result)
- {
- case GTK_ASSERT_DIALOG_STOP:
- wxTrap();
- break;
- case GTK_ASSERT_DIALOG_CONTINUE:
- // nothing to do
- break;
- case GTK_ASSERT_DIALOG_CONTINUE_SUPPRESSING:
- // no more asserts
- returnCode = true;
- break;
-
- default:
- wxFAIL_MSG( wxT("unexpected return code from GtkAssertDialog") );
+ // save the current stack ow...
+ StackDump dump(GTK_ASSERT_DIALOG(dialog));
+ dump.SaveStack(100); // showing more than 100 frames is not very useful
+
+ // ...but process it only if the user needs it
+ gtk_assert_dialog_set_backtrace_callback
+ (
+ GTK_ASSERT_DIALOG(dialog),
+ get_stackframe_callback,
+ &dump
+ );
+#endif // wxUSE_STACKWALKER
+
+ gint result = gtk_dialog_run(GTK_DIALOG (dialog));
+ bool returnCode = false;
+ switch (result)
+ {
+ case GTK_ASSERT_DIALOG_STOP:
+ wxTrap();
+ break;
+ case GTK_ASSERT_DIALOG_CONTINUE:
+ // nothing to do
+ break;
+ case GTK_ASSERT_DIALOG_CONTINUE_SUPPRESSING:
+ // no more asserts
+ returnCode = true;
+ break;
+
+ default:
+ wxFAIL_MSG( wxT("unexpected return code from GtkAssertDialog") );
+ }
+
+ gtk_widget_destroy(dialog);
+ return returnCode;