X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/cd2e8564d7ca31209289d32a0e503292db1a4b65..ec935ba8415e2bbb3593fa6db85c11303b985d23:/src/stc/stc.cpp diff --git a/src/stc/stc.cpp b/src/stc/stc.cpp index f2b2b1b8c1..dda75ca9d3 100644 --- a/src/stc/stc.cpp +++ b/src/stc/stc.cpp @@ -15,15 +15,29 @@ // Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#if wxUSE_STC + +#include "wx/stc/stc.h" +#include "wx/stc/private.h" + +#ifndef WX_PRECOMP + #include "wx/wx.h" +#endif // WX_PRECOMP + #include -#include "wx/wx.h" #include "wx/tokenzr.h" #include "wx/mstream.h" #include "wx/image.h" #include "wx/file.h" -#include "wx/stc/stc.h" #include "ScintillaWX.h" //---------------------------------------------------------------------- @@ -158,9 +172,7 @@ bool wxStyledTextCtrl::Create(wxWindow *parent, long style, const wxString& name) { -#ifdef __WXMAC__ style |= wxVSCROLL | wxHSCROLL; -#endif if (!wxControl::Create(parent, id, pos, size, style | wxWANTS_CHARS | wxCLIP_CHILDREN, wxDefaultValidator, name)) @@ -179,7 +191,7 @@ bool wxStyledTextCtrl::Create(wxWindow *parent, SetCodePage(wxSTC_CP_UTF8); #endif - SetBestFittingSize(size); + SetInitialSize(size); // Reduces flicker on GTK+/X11 SetBackgroundStyle(wxBG_STYLE_CUSTOM); @@ -535,6 +547,11 @@ void wxStyledTextCtrl::MarkerAddSet(int line, int set) { SendMsg(2466, line, set); } +// Set the alpha used for a marker that is drawn in the text area, not the margin. +void wxStyledTextCtrl::MarkerSetAlpha(int markerNumber, int alpha) { + SendMsg(2476, markerNumber, alpha); +} + // Set a margin to be either numeric or symbolic. void wxStyledTextCtrl::SetMarginType(int margin, int marginType) { SendMsg(2240, margin, marginType); @@ -645,6 +662,16 @@ void wxStyledTextCtrl::SetSelBackground(bool useSetting, const wxColour& back) { SendMsg(2068, useSetting, wxColourAsLong(back)); } +// Get the alpha of the selection. +int wxStyledTextCtrl::GetSelAlpha() { + return SendMsg(2477, 0, 0); +} + +// Set the alpha of the selection. +void wxStyledTextCtrl::SetSelAlpha(int alpha) { + SendMsg(2478, alpha, 0); +} + // Set the foreground colour of the caret. void wxStyledTextCtrl::SetCaretForeground(const wxColour& fore) { SendMsg(2069, wxColourAsLong(fore), 0); @@ -771,13 +798,13 @@ void wxStyledTextCtrl::SetCaretLineVisible(bool show) { } // Get the colour of the background of the line containing the caret. -wxColour wxStyledTextCtrl::GetCaretLineBack() { +wxColour wxStyledTextCtrl::GetCaretLineBackground() { long c = SendMsg(2097, 0, 0); return wxColourFromLong(c); } // Set the colour of the background of the line containing the caret. -void wxStyledTextCtrl::SetCaretLineBack(const wxColour& back) { +void wxStyledTextCtrl::SetCaretLineBackground(const wxColour& back) { SendMsg(2098, wxColourAsLong(back), 0); } @@ -1445,6 +1472,11 @@ void wxStyledTextCtrl::CallTipSetForegroundHighlight(const wxColour& fore) { SendMsg(2207, wxColourAsLong(fore), 0); } +// Enable use of STYLE_CALLTIP and set call tip tab size in pixels. +void wxStyledTextCtrl::CallTipUseStyle(int tabSize) { + SendMsg(2212, tabSize, 0); +} + // Find the display line of a document line taking hidden lines into account. int wxStyledTextCtrl::VisibleFromDocLine(int line) { return SendMsg(2220, line, 0); @@ -2481,6 +2513,16 @@ void wxStyledTextCtrl::SelectionDuplicate() { SendMsg(2469, 0, 0); } +// Set background alpha of the caret line. +void wxStyledTextCtrl::SetCaretLineBackAlpha(int alpha) { + SendMsg(2470, alpha, 0); +} + +// Get the background alpha of the caret line. +int wxStyledTextCtrl::GetCaretLineBackAlpha() { + return SendMsg(2471, 0, 0); +} + // Start notifying the container of all key presses and commands. void wxStyledTextCtrl::StartRecord() { SendMsg(3001, 0, 0); @@ -2523,7 +2565,7 @@ void wxStyledTextCtrl::SetLexerLanguage(const wxString& language) { // Retrieve a 'property' value previously set with SetProperty. wxString wxStyledTextCtrl::GetProperty(const wxString& key) { - int len = SendMsg(SCI_GETPROPERTY, (long)(const char*)wx2stc(key), (long)NULL); + int len = SendMsg(SCI_GETPROPERTY, (long)(const char*)wx2stc(key), 0); if (!len) return wxEmptyString; wxMemoryBuffer mbuf(len+1); @@ -2537,7 +2579,7 @@ wxString wxStyledTextCtrl::GetProperty(const wxString& key) { // Retrieve a 'property' value previously set with SetProperty, // with '$()' variable replacement on returned buffer. wxString wxStyledTextCtrl::GetPropertyExpanded(const wxString& key) { - int len = SendMsg(SCI_GETPROPERTYEXPANDED, (long)(const char*)wx2stc(key), (long)NULL); + int len = SendMsg(SCI_GETPROPERTYEXPANDED, (long)(const char*)wx2stc(key), 0); if (!len) return wxEmptyString; wxMemoryBuffer mbuf(len+1); @@ -3088,6 +3130,13 @@ void wxStyledTextCtrl::OnChar(wxKeyEvent& evt) { #endif bool skip = ((ctrl || alt) && ! (ctrl && alt)); +#if wxUSE_UNICODE + // apparently if we don't do this, Unicode keys pressed after non-char + // ASCII ones (e.g. Enter, Tab) are not taken into account (patch 1615989) + if (m_lastKeyDownConsumed && evt.GetUnicodeKey() > 255) + m_lastKeyDownConsumed = false; +#endif + if (!m_lastKeyDownConsumed && !skip) { #if wxUSE_UNICODE int key = evt.GetUnicodeKey(); @@ -3186,12 +3235,7 @@ static void SetEventText(wxStyledTextEvent& evt, const char* text, size_t length) { if(!text) return; - // The unicode conversion MUST have a null byte to terminate the - // string so move it into a buffer first and give it one. - wxMemoryBuffer buf(length+1); - buf.AppendData((void*)text, length); - buf.AppendByte(0); - evt.SetText(stc2wx(buf)); + evt.SetText(stc2wx(text, length)); } @@ -3269,10 +3313,18 @@ void wxStyledTextCtrl::NotifyParent(SCNotification* _scn) { evt.SetEventType(wxEVT_STC_PAINTED); break; + case SCN_AUTOCSELECTION: + evt.SetEventType(wxEVT_STC_AUTOCOMP_SELECTION); + evt.SetListType(scn.listType); + SetEventText(evt, scn.text, strlen(scn.text)); + evt.SetPosition(scn.lParam); + break; + case SCN_USERLISTSELECTION: evt.SetEventType(wxEVT_STC_USERLISTSELECTION); evt.SetListType(scn.listType); SetEventText(evt, scn.text, strlen(scn.text)); + evt.SetPosition(scn.lParam); break; case SCN_URIDROPPED: @@ -3307,11 +3359,7 @@ void wxStyledTextCtrl::NotifyParent(SCNotification* _scn) { case SCN_CALLTIPCLICK: evt.SetEventType(wxEVT_STC_CALLTIP_CLICK); break; - - case SCN_AUTOCSELECTION: - evt.SetEventType(wxEVT_STC_AUTOCOMP_SELECTION); - break; - + default: return; } @@ -3388,11 +3436,4 @@ wxStyledTextEvent::wxStyledTextEvent(const wxStyledTextEvent& event): //---------------------------------------------------------------------- //---------------------------------------------------------------------- - - - - - - - - +#endif // wxUSE_STC