+ 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();
+
+ const unsigned count = GetColumnCount();
+
+ // notice that titles are always in the index order, they will be shown
+ // rearranged according to the display order in the dialog
+ wxArrayString titles;
+ titles.reserve(count);