--- contrib/src/stc/ScintillaWX.cpp.orig Tue Sep 16 22:27:32 2003 +++ contrib/src/stc/ScintillaWX.cpp Wed Sep 17 03:24:43 2003 @@ -138,6 +138,7 @@ wMain = win; stc = win; wheelRotation = 0; + displayPopupMenu = true; Initialise(); } @@ -161,7 +162,8 @@ void ScintillaWX::Finalise() { - ScintillaBase::Finalise(); + Editor::Finalise(); + popup.Destroy(); } @@ -398,11 +400,11 @@ } -void ScintillaWX::AddToPopUp(const char *label, int cmd, bool enabled) { +void ScintillaWX::AddToPopUp(const wxString &label, int cmd, bool enabled) { if (!label[0]) ((wxMenu*)popup.GetID())->AppendSeparator(); else - ((wxMenu*)popup.GetID())->Append(cmd, stc2wx(label)); + ((wxMenu*)popup.GetID())->Append(cmd, label); if (!enabled) ((wxMenu*)popup.GetID())->Enable(cmd, enabled); @@ -713,8 +715,20 @@ void ScintillaWX::DoContextMenu(Point pt) { - if (displayPopupMenu) - ContextMenu(pt); + if (displayPopupMenu) { + bool writable = !WndProc(SCI_GETREADONLY, 0, 0); + popup.CreatePopUp(); + AddToPopUp(_("&Undo\tCtrl-Z"), idcmdUndo, writable && pdoc->CanUndo()); + AddToPopUp(_("&Redo\tCtrl-Y"), idcmdRedo, writable && pdoc->CanRedo()); + AddToPopUp(_("")); + AddToPopUp(_("Cu&t\tCtrl-X"), idcmdCut, writable && currentPos != anchor); + AddToPopUp(_("&Copy\tCtrl-C"), idcmdCopy, currentPos != anchor); + AddToPopUp(_("&Paste\tCtrl-V"), idcmdPaste, writable && WndProc(SCI_CANPASTE, 0, 0)); + AddToPopUp(_("&Delete"), idcmdDelete, writable && currentPos != anchor); + AddToPopUp(_("")); + AddToPopUp(_("Select &All"), idcmdSelectAll); + popup.Show(pt, wMain); + } } void ScintillaWX::DoOnListBox() { --- contrib/src/stc/ScintillaWX.h.orig Tue Sep 16 22:28:24 2003 +++ contrib/src/stc/ScintillaWX.h Wed Sep 17 03:26:54 2003 @@ -101,7 +101,6 @@ virtual void Copy(); virtual void Paste(); virtual void CreateCallTipWindow(PRectangle rc); - virtual void AddToPopUp(const char *label, int cmd = 0, bool enabled = true); virtual void ClaimSelection(); virtual long DefWndProc(unsigned int iMessage, @@ -114,6 +113,10 @@ virtual void NotifyChange(); virtual void NotifyParent(SCNotification scn); + // external dummy proc using scintilla. + void AddToPopUp(const char *label, int cmd=0, bool enabled=true) {} + // it call this. + void AddToPopUp(const wxString &label, int cmd = 0, bool enabled = true); // Event delegates void DoPaint(wxDC* dc, wxRect rect); @@ -162,6 +165,8 @@ #endif int wheelRotation; + bool displayPopupMenu; + Menu popup; friend class wxSTCCallTip; };