+ AddColumnsItems(menu);
+
+ // ... and an extra one to show the customization dialog if the user is
+ // allowed to reorder the columns too
+ const unsigned count = GetColumnCount();
+ if ( HasFlag(wxHD_ALLOW_REORDER) )
+ {
+ menu.AppendSeparator();
+ menu.Append(count, _("&Customize..."));
+ }
+
+ // do show the menu and get the user selection
+ const int rc = GetPopupMenuSelectionFromUser(menu, pt);
+ if ( rc == wxID_NONE )
+ return false;
+
+ if ( static_cast<unsigned>(rc) == count )
+ {
+ return ShowCustomizeDialog();
+ }
+ else // a column selected from the menu
+ {
+ UpdateColumnVisibility(rc, !GetColumn(rc).IsShown());
+ }
+
+ return true;
+}
+
+#endif // wxUSE_MENUS
+
+bool wxHeaderCtrlBase::ShowCustomizeDialog()
+{
+#if wxUSE_REARRANGECTRL
+ // prepare the data for showing the dialog
+ wxArrayInt order = GetColumnsOrder();
+