Apply patch (plus some additional changes) upgrading Scintilla to version 2.03. Closes #11765, #11748, #11346
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63792 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -45,7 +45,6 @@
|
||||
#include "wx/stc/private.h"
|
||||
|
||||
|
||||
|
||||
Point Point::FromLong(long lpoint) {
|
||||
return Point(lpoint & 0xFFFF, lpoint >> 16);
|
||||
}
|
||||
@@ -142,7 +141,7 @@ void Palette::Allocate(Window &) {
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
Font::Font() {
|
||||
id = 0;
|
||||
fid = 0;
|
||||
ascent = 0;
|
||||
}
|
||||
|
||||
@@ -151,7 +150,7 @@ Font::~Font() {
|
||||
|
||||
void Font::Create(const char *faceName, int characterSet,
|
||||
int size, bool bold, bool italic,
|
||||
bool WXUNUSED(extraFontFlag)) {
|
||||
int WXUNUSED(extraFontFlag)) {
|
||||
Release();
|
||||
|
||||
// The minus one is done because since Scintilla uses SC_SHARSET_DEFAULT
|
||||
@@ -171,14 +170,14 @@ void Font::Create(const char *faceName, int characterSet,
|
||||
false,
|
||||
stc2wx(faceName),
|
||||
encoding);
|
||||
id = font;
|
||||
fid = font;
|
||||
}
|
||||
|
||||
|
||||
void Font::Release() {
|
||||
if (id)
|
||||
delete (wxFont*)id;
|
||||
id = 0;
|
||||
if (fid)
|
||||
delete (wxFont*)fid;
|
||||
fid = 0;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
@@ -648,26 +647,26 @@ Window::~Window() {
|
||||
}
|
||||
|
||||
void Window::Destroy() {
|
||||
if (id) {
|
||||
if (wid) {
|
||||
Show(false);
|
||||
GETWIN(id)->Destroy();
|
||||
GETWIN(wid)->Destroy();
|
||||
}
|
||||
id = 0;
|
||||
wid = 0;
|
||||
}
|
||||
|
||||
bool Window::HasFocus() {
|
||||
return wxWindow::FindFocus() == GETWIN(id);
|
||||
return wxWindow::FindFocus() == GETWIN(wid);
|
||||
}
|
||||
|
||||
PRectangle Window::GetPosition() {
|
||||
if (! id) return PRectangle();
|
||||
wxRect rc(GETWIN(id)->GetPosition(), GETWIN(id)->GetSize());
|
||||
if (! wid) return PRectangle();
|
||||
wxRect rc(GETWIN(wid)->GetPosition(), GETWIN(wid)->GetSize());
|
||||
return PRectangleFromwxRect(rc);
|
||||
}
|
||||
|
||||
void Window::SetPosition(PRectangle rc) {
|
||||
wxRect r = wxRectFromPRectangle(rc);
|
||||
GETWIN(id)->SetSize(r);
|
||||
GETWIN(wid)->SetSize(r);
|
||||
}
|
||||
|
||||
void Window::SetPositionRelative(PRectangle rc, Window) {
|
||||
@@ -675,26 +674,26 @@ void Window::SetPositionRelative(PRectangle rc, Window) {
|
||||
}
|
||||
|
||||
PRectangle Window::GetClientPosition() {
|
||||
if (! id) return PRectangle();
|
||||
wxSize sz = GETWIN(id)->GetClientSize();
|
||||
if (! wid) return PRectangle();
|
||||
wxSize sz = GETWIN(wid)->GetClientSize();
|
||||
return PRectangle(0, 0, sz.x, sz.y);
|
||||
}
|
||||
|
||||
void Window::Show(bool show) {
|
||||
GETWIN(id)->Show(show);
|
||||
GETWIN(wid)->Show(show);
|
||||
}
|
||||
|
||||
void Window::InvalidateAll() {
|
||||
GETWIN(id)->Refresh(false);
|
||||
GETWIN(wid)->Refresh(false);
|
||||
}
|
||||
|
||||
void Window::InvalidateRectangle(PRectangle rc) {
|
||||
wxRect r = wxRectFromPRectangle(rc);
|
||||
GETWIN(id)->Refresh(false, &r);
|
||||
GETWIN(wid)->Refresh(false, &r);
|
||||
}
|
||||
|
||||
void Window::SetFont(Font &font) {
|
||||
GETWIN(id)->SetFont(*((wxFont*)font.GetID()));
|
||||
GETWIN(wid)->SetFont(*((wxFont*)font.GetID()));
|
||||
}
|
||||
|
||||
void Window::SetCursor(Cursor curs) {
|
||||
@@ -733,21 +732,21 @@ void Window::SetCursor(Cursor curs) {
|
||||
wxCursor wc = wxCursor(cursorId);
|
||||
if(curs != cursorLast)
|
||||
{
|
||||
GETWIN(id)->SetCursor(wc);
|
||||
GETWIN(wid)->SetCursor(wc);
|
||||
cursorLast = curs;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Window::SetTitle(const char *s) {
|
||||
GETWIN(id)->SetLabel(stc2wx(s));
|
||||
GETWIN(wid)->SetLabel(stc2wx(s));
|
||||
}
|
||||
|
||||
|
||||
// Returns rectangle of monitor pt is on
|
||||
PRectangle Window::GetMonitorRect(Point pt) {
|
||||
wxRect rect;
|
||||
if (! id) return PRectangle();
|
||||
if (! wid) return PRectangle();
|
||||
#if wxUSE_DISPLAY
|
||||
// Get the display the point is found on
|
||||
int n = wxDisplay::GetFromPoint(wxPoint(pt.x, pt.y));
|
||||
@@ -823,15 +822,6 @@ END_EVENT_TABLE()
|
||||
#if wxUSE_POPUPWIN //-----------------------------------
|
||||
#include "wx/popupwin.h"
|
||||
|
||||
|
||||
//
|
||||
// TODO: Refactor these two classes to have a common base (or a mix-in) to get
|
||||
// rid of the code duplication. (Either that or convince somebody to
|
||||
// implement wxPopupWindow for the Mac!!)
|
||||
//
|
||||
// In the meantime, be careful to duplicate any changes as needed...
|
||||
//
|
||||
|
||||
// A popup window to place the wxSTCListBox upon
|
||||
class wxSTCListBoxWin : public wxPopupWindow
|
||||
{
|
||||
@@ -841,11 +831,9 @@ private:
|
||||
void* doubleClickActionData;
|
||||
public:
|
||||
wxSTCListBoxWin(wxWindow* parent, wxWindowID id, Point WXUNUSED(location)) :
|
||||
wxPopupWindow(parent, wxBORDER_NONE)
|
||||
wxPopupWindow(parent, wxBORDER_SIMPLE)
|
||||
{
|
||||
|
||||
SetBackgroundColour(*wxBLACK); // for our simple border
|
||||
|
||||
lv = new wxSTCListBox(parent, id, wxPoint(-50,-50), wxDefaultSize,
|
||||
wxLC_REPORT | wxLC_SINGLE_SEL | wxLC_NO_HEADER | wxBORDER_NONE);
|
||||
lv->SetCursor(wxCursor(wxCURSOR_ARROW));
|
||||
@@ -919,11 +907,9 @@ public:
|
||||
}
|
||||
|
||||
void OnSize(wxSizeEvent& event) {
|
||||
// resize the child
|
||||
wxSize sz = GetSize();
|
||||
sz.x -= 2;
|
||||
sz.y -= 2;
|
||||
lv->SetSize(1, 1, sz.x, sz.y);
|
||||
// resize the child to fill the popup
|
||||
wxSize sz = GetClientSize();
|
||||
lv->SetSize(0, 0, sz.x, sz.y);
|
||||
// reset the column widths
|
||||
lv->SetColumnWidth(0, IconWidth()+4);
|
||||
lv->SetColumnWidth(1, sz.x - 2 - lv->GetColumnWidth(0) -
|
||||
@@ -1170,7 +1156,7 @@ ListBoxImpl::~ListBoxImpl() {
|
||||
|
||||
|
||||
void ListBoxImpl::SetFont(Font &font) {
|
||||
GETLB(id)->SetFont(*((wxFont*)font.GetID()));
|
||||
GETLB(wid)->SetFont(*((wxFont*)font.GetID()));
|
||||
}
|
||||
|
||||
|
||||
@@ -1179,9 +1165,9 @@ void ListBoxImpl::Create(Window &parent, int ctrlID, Point location_, int lineHe
|
||||
lineHeight = lineHeight_;
|
||||
unicodeMode = unicodeMode_;
|
||||
maxStrWidth = 0;
|
||||
id = new wxSTCListBoxWin(GETWIN(parent.GetID()), ctrlID, location);
|
||||
wid = new wxSTCListBoxWin(GETWIN(parent.GetID()), ctrlID, location);
|
||||
if (imgList != NULL)
|
||||
GETLB(id)->SetImageList(imgList, wxIMAGE_LIST_SMALL);
|
||||
GETLB(wid)->SetImageList(imgList, wxIMAGE_LIST_SMALL);
|
||||
}
|
||||
|
||||
|
||||
@@ -1208,15 +1194,15 @@ PRectangle ListBoxImpl::GetDesiredRect() {
|
||||
// give it a default if there are no lines, and/or add a bit more
|
||||
if (maxw == 0) maxw = 100;
|
||||
maxw += aveCharWidth * 3 +
|
||||
GETLBW(id)->IconWidth() + wxSystemSettings::GetMetric(wxSYS_VSCROLL_X);
|
||||
GETLBW(wid)->IconWidth() + wxSystemSettings::GetMetric(wxSYS_VSCROLL_X);
|
||||
if (maxw > 350)
|
||||
maxw = 350;
|
||||
|
||||
// estimate a desired height
|
||||
int count = GETLB(id)->GetItemCount();
|
||||
int count = GETLB(wid)->GetItemCount();
|
||||
if (count) {
|
||||
wxRect rect;
|
||||
GETLB(id)->GetItemRect(0, rect);
|
||||
GETLB(wid)->GetItemRect(0, rect);
|
||||
maxh = count * rect.GetHeight();
|
||||
if (maxh > 140) // TODO: Use desiredVisibleRows??
|
||||
maxh = 140;
|
||||
@@ -1238,12 +1224,12 @@ PRectangle ListBoxImpl::GetDesiredRect() {
|
||||
|
||||
|
||||
int ListBoxImpl::CaretFromEdge() {
|
||||
return 4 + GETLBW(id)->IconWidth();
|
||||
return 4 + GETLBW(wid)->IconWidth();
|
||||
}
|
||||
|
||||
|
||||
void ListBoxImpl::Clear() {
|
||||
GETLB(id)->DeleteAllItems();
|
||||
GETLB(wid)->DeleteAllItems();
|
||||
}
|
||||
|
||||
|
||||
@@ -1252,20 +1238,20 @@ void ListBoxImpl::Append(char *s, int type) {
|
||||
}
|
||||
|
||||
void ListBoxImpl::Append(const wxString& text, int type) {
|
||||
long count = GETLB(id)->GetItemCount();
|
||||
long itemID = GETLB(id)->InsertItem(count, wxEmptyString);
|
||||
long count = GETLB(wid)->GetItemCount();
|
||||
long itemID = GETLB(wid)->InsertItem(count, wxEmptyString);
|
||||
long idx = -1;
|
||||
GETLB(id)->SetItem(itemID, 1, text);
|
||||
GETLB(wid)->SetItem(itemID, 1, text);
|
||||
maxStrWidth = wxMax(maxStrWidth, text.length());
|
||||
if (type != -1) {
|
||||
wxCHECK_RET(imgTypeMap, wxT("Unexpected NULL imgTypeMap"));
|
||||
idx = imgTypeMap->Item(type);
|
||||
}
|
||||
GETLB(id)->SetItemImage(itemID, idx, idx);
|
||||
GETLB(wid)->SetItemImage(itemID, idx, idx);
|
||||
}
|
||||
|
||||
void ListBoxImpl::SetList(const char* list, char separator, char typesep) {
|
||||
GETLB(id)->Freeze();
|
||||
GETLB(wid)->Freeze();
|
||||
Clear();
|
||||
wxStringTokenizer tkzr(stc2wx(list), (wxChar)separator);
|
||||
while ( tkzr.HasMoreTokens() ) {
|
||||
@@ -1278,12 +1264,12 @@ void ListBoxImpl::SetList(const char* list, char separator, char typesep) {
|
||||
}
|
||||
Append(token, (int)type);
|
||||
}
|
||||
GETLB(id)->Thaw();
|
||||
GETLB(wid)->Thaw();
|
||||
}
|
||||
|
||||
|
||||
int ListBoxImpl::Length() {
|
||||
return GETLB(id)->GetItemCount();
|
||||
return GETLB(wid)->GetItemCount();
|
||||
}
|
||||
|
||||
|
||||
@@ -1293,13 +1279,13 @@ void ListBoxImpl::Select(int n) {
|
||||
n = 0;
|
||||
select = false;
|
||||
}
|
||||
GETLB(id)->EnsureVisible(n);
|
||||
GETLB(id)->Select(n, select);
|
||||
GETLB(wid)->EnsureVisible(n);
|
||||
GETLB(wid)->Select(n, select);
|
||||
}
|
||||
|
||||
|
||||
int ListBoxImpl::GetSelection() {
|
||||
return GETLB(id)->GetFirstSelected();
|
||||
return GETLB(wid)->GetFirstSelected();
|
||||
}
|
||||
|
||||
|
||||
@@ -1314,7 +1300,7 @@ void ListBoxImpl::GetValue(int n, char *value, int len) {
|
||||
item.SetId(n);
|
||||
item.SetColumn(1);
|
||||
item.SetMask(wxLIST_MASK_TEXT);
|
||||
GETLB(id)->GetItem(item);
|
||||
GETLB(wid)->GetItem(item);
|
||||
strncpy(value, wx2stc(item.GetText()), len);
|
||||
value[len-1] = '\0';
|
||||
}
|
||||
@@ -1351,13 +1337,13 @@ void ListBoxImpl::ClearRegisteredImages() {
|
||||
delete imgTypeMap;
|
||||
imgTypeMap = NULL;
|
||||
}
|
||||
if (id)
|
||||
GETLB(id)->SetImageList(NULL, wxIMAGE_LIST_SMALL);
|
||||
if (wid)
|
||||
GETLB(wid)->SetImageList(NULL, wxIMAGE_LIST_SMALL);
|
||||
}
|
||||
|
||||
|
||||
void ListBoxImpl::SetDoubleClickAction(CallBackAction action, void *data) {
|
||||
GETLBW(id)->SetDoubleClickAction(action, data);
|
||||
GETLBW(wid)->SetDoubleClickAction(action, data);
|
||||
}
|
||||
|
||||
|
||||
@@ -1373,22 +1359,22 @@ ListBox *ListBox::Allocate() {
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
Menu::Menu() : id(0) {
|
||||
Menu::Menu() : mid(0) {
|
||||
}
|
||||
|
||||
void Menu::CreatePopUp() {
|
||||
Destroy();
|
||||
id = new wxMenu();
|
||||
mid = new wxMenu();
|
||||
}
|
||||
|
||||
void Menu::Destroy() {
|
||||
if (id)
|
||||
delete (wxMenu*)id;
|
||||
id = 0;
|
||||
if (mid)
|
||||
delete (wxMenu*)mid;
|
||||
mid = 0;
|
||||
}
|
||||
|
||||
void Menu::Show(Point pt, Window &w) {
|
||||
GETWIN(w.GetID())->PopupMenu((wxMenu*)id, pt.x - 4, pt.y);
|
||||
GETWIN(w.GetID())->PopupMenu((wxMenu*)mid, pt.x - 4, pt.y);
|
||||
Destroy();
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user