Copied/merged from the 2.2 branch.
Changes needed to build with new event system git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9375 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
1b62f00d8e
commit
ce1ecc6d48
@ -325,57 +325,41 @@ void ScintillaWX::DoPaint(wxDC* dc, wxRect rect) {
|
||||
|
||||
void ScintillaWX::DoHScroll(int type, int pos) {
|
||||
int xPos = xOffset;
|
||||
switch (type) {
|
||||
case wxEVT_SCROLLWIN_LINEUP:
|
||||
if (type == wxEVT_SCROLLWIN_LINEUP)
|
||||
xPos -= H_SCROLL_STEP;
|
||||
break;
|
||||
case wxEVT_SCROLLWIN_LINEDOWN:
|
||||
else if (type == wxEVT_SCROLLWIN_LINEDOWN)
|
||||
xPos += H_SCROLL_STEP;
|
||||
break;
|
||||
case wxEVT_SCROLLWIN_PAGEUP:
|
||||
else if (type == wxEVT_SCROLLWIN_PAGEUP)
|
||||
xPos -= H_SCROLL_PAGE;
|
||||
break;
|
||||
case wxEVT_SCROLLWIN_PAGEDOWN:
|
||||
else if (type == wxEVT_SCROLLWIN_PAGEDOWN)
|
||||
xPos += H_SCROLL_PAGE;
|
||||
break;
|
||||
case wxEVT_SCROLLWIN_TOP:
|
||||
else if (type == wxEVT_SCROLLWIN_TOP)
|
||||
xPos = 0;
|
||||
break;
|
||||
case wxEVT_SCROLLWIN_BOTTOM:
|
||||
else if (type == wxEVT_SCROLLWIN_BOTTOM)
|
||||
xPos = H_SCROLL_MAX;
|
||||
break;
|
||||
case wxEVT_SCROLLWIN_THUMBTRACK:
|
||||
else if (type == wxEVT_SCROLLWIN_THUMBTRACK)
|
||||
xPos = pos;
|
||||
break;
|
||||
}
|
||||
|
||||
HorizontalScrollTo(xPos);
|
||||
}
|
||||
|
||||
void ScintillaWX::DoVScroll(int type, int pos) {
|
||||
int topLineNew = topLine;
|
||||
switch (type) {
|
||||
case wxEVT_SCROLLWIN_LINEUP:
|
||||
if (type == wxEVT_SCROLLWIN_LINEUP)
|
||||
topLineNew -= 1;
|
||||
break;
|
||||
case wxEVT_SCROLLWIN_LINEDOWN:
|
||||
else if (type == wxEVT_SCROLLWIN_LINEDOWN)
|
||||
topLineNew += 1;
|
||||
break;
|
||||
case wxEVT_SCROLLWIN_PAGEUP:
|
||||
else if (type == wxEVT_SCROLLWIN_PAGEUP)
|
||||
topLineNew -= LinesToScroll();
|
||||
break;
|
||||
case wxEVT_SCROLLWIN_PAGEDOWN:
|
||||
else if (type == wxEVT_SCROLLWIN_PAGEDOWN)
|
||||
topLineNew += LinesToScroll();
|
||||
break;
|
||||
case wxEVT_SCROLLWIN_TOP:
|
||||
else if (type == wxEVT_SCROLLWIN_TOP)
|
||||
topLineNew = 0;
|
||||
break;
|
||||
case wxEVT_SCROLLWIN_BOTTOM:
|
||||
else if (type == wxEVT_SCROLLWIN_BOTTOM)
|
||||
topLineNew = MaxScrollPos();
|
||||
break;
|
||||
case wxEVT_SCROLLWIN_THUMBTRACK:
|
||||
else if (type == wxEVT_SCROLLWIN_THUMBTRACK)
|
||||
topLineNew = pos;
|
||||
break;
|
||||
}
|
||||
|
||||
ScrollTo(topLineNew);
|
||||
}
|
||||
|
||||
|
@ -304,8 +304,22 @@ int Editor::PositionFromLineX(int line, int x) {
|
||||
|
||||
void Editor::RedrawRect(PRectangle rc) {
|
||||
//Platform::DebugPrintf("Redraw %d %d - %d %d\n", rc.left, rc.top, rc.right, rc.bottom);
|
||||
|
||||
// Clip the redraw rectangle into the client area
|
||||
PRectangle rcClient = GetClientRectangle();
|
||||
if (rc.top < rcClient.top)
|
||||
rc.top = rcClient.top;
|
||||
if (rc.bottom > rcClient.bottom)
|
||||
rc.bottom = rcClient.bottom;
|
||||
if (rc.left < rcClient.left)
|
||||
rc.left = rcClient.left;
|
||||
if (rc.right > rcClient.right)
|
||||
rc.right = rcClient.right;
|
||||
|
||||
if ((rc.bottom > rc.top) && (rc.right > rc.left)) {
|
||||
wDraw.InvalidateRectangle(rc);
|
||||
}
|
||||
}
|
||||
|
||||
void Editor::Redraw() {
|
||||
//Platform::DebugPrintf("Redraw all\n");
|
||||
|
@ -1539,10 +1539,31 @@ void wxStyledTextCtrl::OnMouseRightUp(wxMouseEvent& evt) {
|
||||
m_swx->DoContextMenu(Point(pt.x, pt.y));
|
||||
}
|
||||
|
||||
|
||||
void wxStyledTextCtrl::OnChar(wxKeyEvent& evt) {
|
||||
long key = evt.KeyCode();
|
||||
if ((key > WXK_ESCAPE) &&
|
||||
(key != WXK_DELETE) && (key < 255) &&
|
||||
switch (key) {
|
||||
// Special handling for charcters that must be typed with AltGr down on
|
||||
// foreign keyboards. (Comes to us as Ctrl+Alt, and so would get
|
||||
// filtered out by the default case below.)
|
||||
//
|
||||
// There should be a better way to do this...
|
||||
//
|
||||
case '\\':
|
||||
case '|':
|
||||
case '@':
|
||||
case '#':
|
||||
case '¬':
|
||||
case '[':
|
||||
case ']':
|
||||
case '{':
|
||||
case '}':
|
||||
case '?':
|
||||
m_swx->DoAddChar(key);
|
||||
break;
|
||||
|
||||
default:
|
||||
if ((key > WXK_ESCAPE) && (key != WXK_DELETE) && (key < 255) &&
|
||||
!evt.ControlDown() && !evt.AltDown()) {
|
||||
|
||||
m_swx->DoAddChar(key);
|
||||
@ -1551,6 +1572,7 @@ void wxStyledTextCtrl::OnChar(wxKeyEvent& evt) {
|
||||
evt.Skip();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void wxStyledTextCtrl::OnKeyDown(wxKeyEvent& evt) {
|
||||
long key = evt.KeyCode();
|
||||
@ -1561,6 +1583,7 @@ void wxStyledTextCtrl::OnKeyDown(wxKeyEvent& evt) {
|
||||
evt.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxStyledTextCtrl::OnLoseFocus(wxFocusEvent& evt) {
|
||||
m_swx->DoLoseFocus();
|
||||
}
|
||||
|
@ -325,57 +325,41 @@ void ScintillaWX::DoPaint(wxDC* dc, wxRect rect) {
|
||||
|
||||
void ScintillaWX::DoHScroll(int type, int pos) {
|
||||
int xPos = xOffset;
|
||||
switch (type) {
|
||||
case wxEVT_SCROLLWIN_LINEUP:
|
||||
if (type == wxEVT_SCROLLWIN_LINEUP)
|
||||
xPos -= H_SCROLL_STEP;
|
||||
break;
|
||||
case wxEVT_SCROLLWIN_LINEDOWN:
|
||||
else if (type == wxEVT_SCROLLWIN_LINEDOWN)
|
||||
xPos += H_SCROLL_STEP;
|
||||
break;
|
||||
case wxEVT_SCROLLWIN_PAGEUP:
|
||||
else if (type == wxEVT_SCROLLWIN_PAGEUP)
|
||||
xPos -= H_SCROLL_PAGE;
|
||||
break;
|
||||
case wxEVT_SCROLLWIN_PAGEDOWN:
|
||||
else if (type == wxEVT_SCROLLWIN_PAGEDOWN)
|
||||
xPos += H_SCROLL_PAGE;
|
||||
break;
|
||||
case wxEVT_SCROLLWIN_TOP:
|
||||
else if (type == wxEVT_SCROLLWIN_TOP)
|
||||
xPos = 0;
|
||||
break;
|
||||
case wxEVT_SCROLLWIN_BOTTOM:
|
||||
else if (type == wxEVT_SCROLLWIN_BOTTOM)
|
||||
xPos = H_SCROLL_MAX;
|
||||
break;
|
||||
case wxEVT_SCROLLWIN_THUMBTRACK:
|
||||
else if (type == wxEVT_SCROLLWIN_THUMBTRACK)
|
||||
xPos = pos;
|
||||
break;
|
||||
}
|
||||
|
||||
HorizontalScrollTo(xPos);
|
||||
}
|
||||
|
||||
void ScintillaWX::DoVScroll(int type, int pos) {
|
||||
int topLineNew = topLine;
|
||||
switch (type) {
|
||||
case wxEVT_SCROLLWIN_LINEUP:
|
||||
if (type == wxEVT_SCROLLWIN_LINEUP)
|
||||
topLineNew -= 1;
|
||||
break;
|
||||
case wxEVT_SCROLLWIN_LINEDOWN:
|
||||
else if (type == wxEVT_SCROLLWIN_LINEDOWN)
|
||||
topLineNew += 1;
|
||||
break;
|
||||
case wxEVT_SCROLLWIN_PAGEUP:
|
||||
else if (type == wxEVT_SCROLLWIN_PAGEUP)
|
||||
topLineNew -= LinesToScroll();
|
||||
break;
|
||||
case wxEVT_SCROLLWIN_PAGEDOWN:
|
||||
else if (type == wxEVT_SCROLLWIN_PAGEDOWN)
|
||||
topLineNew += LinesToScroll();
|
||||
break;
|
||||
case wxEVT_SCROLLWIN_TOP:
|
||||
else if (type == wxEVT_SCROLLWIN_TOP)
|
||||
topLineNew = 0;
|
||||
break;
|
||||
case wxEVT_SCROLLWIN_BOTTOM:
|
||||
else if (type == wxEVT_SCROLLWIN_BOTTOM)
|
||||
topLineNew = MaxScrollPos();
|
||||
break;
|
||||
case wxEVT_SCROLLWIN_THUMBTRACK:
|
||||
else if (type == wxEVT_SCROLLWIN_THUMBTRACK)
|
||||
topLineNew = pos;
|
||||
break;
|
||||
}
|
||||
|
||||
ScrollTo(topLineNew);
|
||||
}
|
||||
|
||||
|
@ -304,8 +304,22 @@ int Editor::PositionFromLineX(int line, int x) {
|
||||
|
||||
void Editor::RedrawRect(PRectangle rc) {
|
||||
//Platform::DebugPrintf("Redraw %d %d - %d %d\n", rc.left, rc.top, rc.right, rc.bottom);
|
||||
|
||||
// Clip the redraw rectangle into the client area
|
||||
PRectangle rcClient = GetClientRectangle();
|
||||
if (rc.top < rcClient.top)
|
||||
rc.top = rcClient.top;
|
||||
if (rc.bottom > rcClient.bottom)
|
||||
rc.bottom = rcClient.bottom;
|
||||
if (rc.left < rcClient.left)
|
||||
rc.left = rcClient.left;
|
||||
if (rc.right > rcClient.right)
|
||||
rc.right = rcClient.right;
|
||||
|
||||
if ((rc.bottom > rc.top) && (rc.right > rc.left)) {
|
||||
wDraw.InvalidateRectangle(rc);
|
||||
}
|
||||
}
|
||||
|
||||
void Editor::Redraw() {
|
||||
//Platform::DebugPrintf("Redraw all\n");
|
||||
|
@ -1539,10 +1539,31 @@ void wxStyledTextCtrl::OnMouseRightUp(wxMouseEvent& evt) {
|
||||
m_swx->DoContextMenu(Point(pt.x, pt.y));
|
||||
}
|
||||
|
||||
|
||||
void wxStyledTextCtrl::OnChar(wxKeyEvent& evt) {
|
||||
long key = evt.KeyCode();
|
||||
if ((key > WXK_ESCAPE) &&
|
||||
(key != WXK_DELETE) && (key < 255) &&
|
||||
switch (key) {
|
||||
// Special handling for charcters that must be typed with AltGr down on
|
||||
// foreign keyboards. (Comes to us as Ctrl+Alt, and so would get
|
||||
// filtered out by the default case below.)
|
||||
//
|
||||
// There should be a better way to do this...
|
||||
//
|
||||
case '\\':
|
||||
case '|':
|
||||
case '@':
|
||||
case '#':
|
||||
case '¬':
|
||||
case '[':
|
||||
case ']':
|
||||
case '{':
|
||||
case '}':
|
||||
case '?':
|
||||
m_swx->DoAddChar(key);
|
||||
break;
|
||||
|
||||
default:
|
||||
if ((key > WXK_ESCAPE) && (key != WXK_DELETE) && (key < 255) &&
|
||||
!evt.ControlDown() && !evt.AltDown()) {
|
||||
|
||||
m_swx->DoAddChar(key);
|
||||
@ -1551,6 +1572,7 @@ void wxStyledTextCtrl::OnChar(wxKeyEvent& evt) {
|
||||
evt.Skip();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void wxStyledTextCtrl::OnKeyDown(wxKeyEvent& evt) {
|
||||
long key = evt.KeyCode();
|
||||
@ -1561,6 +1583,7 @@ void wxStyledTextCtrl::OnKeyDown(wxKeyEvent& evt) {
|
||||
evt.Skip();
|
||||
}
|
||||
|
||||
|
||||
void wxStyledTextCtrl::OnLoseFocus(wxFocusEvent& evt) {
|
||||
m_swx->DoLoseFocus();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user