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:
Robin Dunn
2001-02-16 08:40:24 +00:00
parent 1b62f00d8e
commit ce1ecc6d48
6 changed files with 150 additions and 108 deletions

View File

@@ -325,57 +325,41 @@ void ScintillaWX::DoPaint(wxDC* dc, wxRect rect) {
void ScintillaWX::DoHScroll(int type, int pos) { void ScintillaWX::DoHScroll(int type, int pos) {
int xPos = xOffset; int xPos = xOffset;
switch (type) { if (type == wxEVT_SCROLLWIN_LINEUP)
case wxEVT_SCROLLWIN_LINEUP:
xPos -= H_SCROLL_STEP; xPos -= H_SCROLL_STEP;
break; else if (type == wxEVT_SCROLLWIN_LINEDOWN)
case wxEVT_SCROLLWIN_LINEDOWN:
xPos += H_SCROLL_STEP; xPos += H_SCROLL_STEP;
break; else if (type == wxEVT_SCROLLWIN_PAGEUP)
case wxEVT_SCROLLWIN_PAGEUP:
xPos -= H_SCROLL_PAGE; xPos -= H_SCROLL_PAGE;
break; else if (type == wxEVT_SCROLLWIN_PAGEDOWN)
case wxEVT_SCROLLWIN_PAGEDOWN:
xPos += H_SCROLL_PAGE; xPos += H_SCROLL_PAGE;
break; else if (type == wxEVT_SCROLLWIN_TOP)
case wxEVT_SCROLLWIN_TOP:
xPos = 0; xPos = 0;
break; else if (type == wxEVT_SCROLLWIN_BOTTOM)
case wxEVT_SCROLLWIN_BOTTOM:
xPos = H_SCROLL_MAX; xPos = H_SCROLL_MAX;
break; else if (type == wxEVT_SCROLLWIN_THUMBTRACK)
case wxEVT_SCROLLWIN_THUMBTRACK:
xPos = pos; xPos = pos;
break;
}
HorizontalScrollTo(xPos); HorizontalScrollTo(xPos);
} }
void ScintillaWX::DoVScroll(int type, int pos) { void ScintillaWX::DoVScroll(int type, int pos) {
int topLineNew = topLine; int topLineNew = topLine;
switch (type) { if (type == wxEVT_SCROLLWIN_LINEUP)
case wxEVT_SCROLLWIN_LINEUP:
topLineNew -= 1; topLineNew -= 1;
break; else if (type == wxEVT_SCROLLWIN_LINEDOWN)
case wxEVT_SCROLLWIN_LINEDOWN:
topLineNew += 1; topLineNew += 1;
break; else if (type == wxEVT_SCROLLWIN_PAGEUP)
case wxEVT_SCROLLWIN_PAGEUP:
topLineNew -= LinesToScroll(); topLineNew -= LinesToScroll();
break; else if (type == wxEVT_SCROLLWIN_PAGEDOWN)
case wxEVT_SCROLLWIN_PAGEDOWN:
topLineNew += LinesToScroll(); topLineNew += LinesToScroll();
break; else if (type == wxEVT_SCROLLWIN_TOP)
case wxEVT_SCROLLWIN_TOP:
topLineNew = 0; topLineNew = 0;
break; else if (type == wxEVT_SCROLLWIN_BOTTOM)
case wxEVT_SCROLLWIN_BOTTOM:
topLineNew = MaxScrollPos(); topLineNew = MaxScrollPos();
break; else if (type == wxEVT_SCROLLWIN_THUMBTRACK)
case wxEVT_SCROLLWIN_THUMBTRACK:
topLineNew = pos; topLineNew = pos;
break;
}
ScrollTo(topLineNew); ScrollTo(topLineNew);
} }

View File

@@ -14,7 +14,7 @@
#if PLAT_WX || PLAT_GTK #if PLAT_WX || PLAT_GTK
#include "WinDefs.h" #include "WinDefs.h"
#endif #endif
#include "ContractionState.h" #include "ContractionState.h"
#include "SVector.h" #include "SVector.h"
@@ -106,7 +106,7 @@ Editor::Editor() {
#ifdef MACRO_SUPPORT #ifdef MACRO_SUPPORT
recordingMacro = 0; recordingMacro = 0;
#endif #endif
foldFlags = 0; foldFlags = 0;
} }
@@ -303,8 +303,22 @@ int Editor::PositionFromLineX(int line, int x) {
} }
void Editor::RedrawRect(PRectangle rc) { void Editor::RedrawRect(PRectangle rc) {
//Platform::DebugPrintf("Redraw %d %d - %d %d\n", rc.left, rc.top, rc.right, rc.bottom); //Platform::DebugPrintf("Redraw %d %d - %d %d\n", rc.left, rc.top, rc.right, rc.bottom);
wDraw.InvalidateRectangle(rc);
// 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() { void Editor::Redraw() {
@@ -659,10 +673,10 @@ void Editor::PaintSelMargin(Surface *surfWindow, PRectangle &rc) {
if (vs.ms[margin].symbol) { if (vs.ms[margin].symbol) {
/* alternate scheme: /* alternate scheme:
if (vs.ms[margin].mask & SC_MASK_FOLDERS) if (vs.ms[margin].mask & SC_MASK_FOLDERS)
surface->FillRectangle(rcSelMargin, vs.styles[STYLE_DEFAULT].back.allocated); surface->FillRectangle(rcSelMargin, vs.styles[STYLE_DEFAULT].back.allocated);
else else
// Required because of special way brush is created for selection margin // Required because of special way brush is created for selection margin
surface->FillRectangle(rcSelMargin, pixmapSelPattern); surface->FillRectangle(rcSelMargin, pixmapSelPattern);
*/ */
if (vs.ms[margin].mask & SC_MASK_FOLDERS) if (vs.ms[margin].mask & SC_MASK_FOLDERS)
// Required because of special way brush is created for selection margin // Required because of special way brush is created for selection margin
@@ -1653,7 +1667,7 @@ void Editor::NotifyChar(char ch) {
txt[1] = '\0'; txt[1] = '\0';
NotifyMacroRecord(SCI_REPLACESEL, 0, reinterpret_cast<long>(txt)); NotifyMacroRecord(SCI_REPLACESEL, 0, reinterpret_cast<long>(txt));
} }
#endif #endif
} }
void Editor::NotifySavePoint(bool isSavePoint) { void Editor::NotifySavePoint(bool isSavePoint) {
@@ -1939,7 +1953,7 @@ void Editor::NotifyMacroRecord(unsigned int iMessage, unsigned long wParam, long
scn.lParam = lParam; scn.lParam = lParam;
NotifyParent(scn); NotifyParent(scn);
} }
#endif #endif
// Force scroll and keep position relative to top of window // Force scroll and keep position relative to top of window
void Editor::PageMove(int direction, bool extend) { void Editor::PageMove(int direction, bool extend) {
@@ -3019,7 +3033,7 @@ long Editor::WndProc(unsigned int iMessage, unsigned long wParam, long lParam) {
#ifdef MACRO_SUPPORT #ifdef MACRO_SUPPORT
if (recordingMacro) if (recordingMacro)
NotifyMacroRecord(iMessage, wParam, lParam); NotifyMacroRecord(iMessage, wParam, lParam);
#endif #endif
switch (iMessage) { switch (iMessage) {
@@ -3411,9 +3425,9 @@ long Editor::WndProc(unsigned int iMessage, unsigned long wParam, long lParam) {
return SEL_EMPTY; return SEL_EMPTY;
else else
return SEL_TEXT; return SEL_TEXT;
#else #else
return 0; return 0;
#endif #endif
case EM_HIDESELECTION: case EM_HIDESELECTION:
hideSelection = wParam; hideSelection = wParam;
@@ -3447,7 +3461,7 @@ long Editor::WndProc(unsigned int iMessage, unsigned long wParam, long lParam) {
vs.rightMarginWidth = vs.aveCharWidth / 2; vs.rightMarginWidth = vs.aveCharWidth / 2;
} }
InvalidateStyleRedraw(); InvalidateStyleRedraw();
#endif #endif
break; break;
case SCI_SETMARGINLEFT: case SCI_SETMARGINLEFT:
@@ -4238,10 +4252,10 @@ long Editor::WndProc(unsigned int iMessage, unsigned long wParam, long lParam) {
case SCI_SETOVERTYPE: case SCI_SETOVERTYPE:
inOverstrike = wParam; inOverstrike = wParam;
break; break;
case SCI_GETOVERTYPE: case SCI_GETOVERTYPE:
return inOverstrike ? TRUE : FALSE; return inOverstrike ? TRUE : FALSE;
#ifdef MACRO_SUPPORT #ifdef MACRO_SUPPORT
case SCI_STARTRECORD: case SCI_STARTRECORD:
recordingMacro = 1; recordingMacro = 1;
@@ -4250,7 +4264,7 @@ long Editor::WndProc(unsigned int iMessage, unsigned long wParam, long lParam) {
case SCI_STOPRECORD: case SCI_STOPRECORD:
recordingMacro = 0; recordingMacro = 0;
return 0; return 0;
#endif #endif
default: default:
return DefWndProc(iMessage, wParam, lParam); return DefWndProc(iMessage, wParam, lParam);

View File

@@ -1539,16 +1539,38 @@ void wxStyledTextCtrl::OnMouseRightUp(wxMouseEvent& evt) {
m_swx->DoContextMenu(Point(pt.x, pt.y)); m_swx->DoContextMenu(Point(pt.x, pt.y));
} }
void wxStyledTextCtrl::OnChar(wxKeyEvent& evt) { void wxStyledTextCtrl::OnChar(wxKeyEvent& evt) {
long key = evt.KeyCode(); long key = evt.KeyCode();
if ((key > WXK_ESCAPE) && switch (key) {
(key != WXK_DELETE) && (key < 255) && // Special handling for charcters that must be typed with AltGr down on
!evt.ControlDown() && !evt.AltDown()) { // 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 '<EFBFBD>':
case '[':
case ']':
case '{':
case '}':
case '?':
m_swx->DoAddChar(key);
break;
m_swx->DoAddChar(key); default:
} if ((key > WXK_ESCAPE) && (key != WXK_DELETE) && (key < 255) &&
else { !evt.ControlDown() && !evt.AltDown()) {
evt.Skip();
m_swx->DoAddChar(key);
}
else {
evt.Skip();
}
} }
} }
@@ -1561,6 +1583,7 @@ void wxStyledTextCtrl::OnKeyDown(wxKeyEvent& evt) {
evt.Skip(); evt.Skip();
} }
void wxStyledTextCtrl::OnLoseFocus(wxFocusEvent& evt) { void wxStyledTextCtrl::OnLoseFocus(wxFocusEvent& evt) {
m_swx->DoLoseFocus(); m_swx->DoLoseFocus();
} }

View File

@@ -325,57 +325,41 @@ void ScintillaWX::DoPaint(wxDC* dc, wxRect rect) {
void ScintillaWX::DoHScroll(int type, int pos) { void ScintillaWX::DoHScroll(int type, int pos) {
int xPos = xOffset; int xPos = xOffset;
switch (type) { if (type == wxEVT_SCROLLWIN_LINEUP)
case wxEVT_SCROLLWIN_LINEUP:
xPos -= H_SCROLL_STEP; xPos -= H_SCROLL_STEP;
break; else if (type == wxEVT_SCROLLWIN_LINEDOWN)
case wxEVT_SCROLLWIN_LINEDOWN:
xPos += H_SCROLL_STEP; xPos += H_SCROLL_STEP;
break; else if (type == wxEVT_SCROLLWIN_PAGEUP)
case wxEVT_SCROLLWIN_PAGEUP:
xPos -= H_SCROLL_PAGE; xPos -= H_SCROLL_PAGE;
break; else if (type == wxEVT_SCROLLWIN_PAGEDOWN)
case wxEVT_SCROLLWIN_PAGEDOWN:
xPos += H_SCROLL_PAGE; xPos += H_SCROLL_PAGE;
break; else if (type == wxEVT_SCROLLWIN_TOP)
case wxEVT_SCROLLWIN_TOP:
xPos = 0; xPos = 0;
break; else if (type == wxEVT_SCROLLWIN_BOTTOM)
case wxEVT_SCROLLWIN_BOTTOM:
xPos = H_SCROLL_MAX; xPos = H_SCROLL_MAX;
break; else if (type == wxEVT_SCROLLWIN_THUMBTRACK)
case wxEVT_SCROLLWIN_THUMBTRACK:
xPos = pos; xPos = pos;
break;
}
HorizontalScrollTo(xPos); HorizontalScrollTo(xPos);
} }
void ScintillaWX::DoVScroll(int type, int pos) { void ScintillaWX::DoVScroll(int type, int pos) {
int topLineNew = topLine; int topLineNew = topLine;
switch (type) { if (type == wxEVT_SCROLLWIN_LINEUP)
case wxEVT_SCROLLWIN_LINEUP:
topLineNew -= 1; topLineNew -= 1;
break; else if (type == wxEVT_SCROLLWIN_LINEDOWN)
case wxEVT_SCROLLWIN_LINEDOWN:
topLineNew += 1; topLineNew += 1;
break; else if (type == wxEVT_SCROLLWIN_PAGEUP)
case wxEVT_SCROLLWIN_PAGEUP:
topLineNew -= LinesToScroll(); topLineNew -= LinesToScroll();
break; else if (type == wxEVT_SCROLLWIN_PAGEDOWN)
case wxEVT_SCROLLWIN_PAGEDOWN:
topLineNew += LinesToScroll(); topLineNew += LinesToScroll();
break; else if (type == wxEVT_SCROLLWIN_TOP)
case wxEVT_SCROLLWIN_TOP:
topLineNew = 0; topLineNew = 0;
break; else if (type == wxEVT_SCROLLWIN_BOTTOM)
case wxEVT_SCROLLWIN_BOTTOM:
topLineNew = MaxScrollPos(); topLineNew = MaxScrollPos();
break; else if (type == wxEVT_SCROLLWIN_THUMBTRACK)
case wxEVT_SCROLLWIN_THUMBTRACK:
topLineNew = pos; topLineNew = pos;
break;
}
ScrollTo(topLineNew); ScrollTo(topLineNew);
} }

View File

@@ -14,7 +14,7 @@
#if PLAT_WX || PLAT_GTK #if PLAT_WX || PLAT_GTK
#include "WinDefs.h" #include "WinDefs.h"
#endif #endif
#include "ContractionState.h" #include "ContractionState.h"
#include "SVector.h" #include "SVector.h"
@@ -106,7 +106,7 @@ Editor::Editor() {
#ifdef MACRO_SUPPORT #ifdef MACRO_SUPPORT
recordingMacro = 0; recordingMacro = 0;
#endif #endif
foldFlags = 0; foldFlags = 0;
} }
@@ -303,8 +303,22 @@ int Editor::PositionFromLineX(int line, int x) {
} }
void Editor::RedrawRect(PRectangle rc) { void Editor::RedrawRect(PRectangle rc) {
//Platform::DebugPrintf("Redraw %d %d - %d %d\n", rc.left, rc.top, rc.right, rc.bottom); //Platform::DebugPrintf("Redraw %d %d - %d %d\n", rc.left, rc.top, rc.right, rc.bottom);
wDraw.InvalidateRectangle(rc);
// 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() { void Editor::Redraw() {
@@ -659,10 +673,10 @@ void Editor::PaintSelMargin(Surface *surfWindow, PRectangle &rc) {
if (vs.ms[margin].symbol) { if (vs.ms[margin].symbol) {
/* alternate scheme: /* alternate scheme:
if (vs.ms[margin].mask & SC_MASK_FOLDERS) if (vs.ms[margin].mask & SC_MASK_FOLDERS)
surface->FillRectangle(rcSelMargin, vs.styles[STYLE_DEFAULT].back.allocated); surface->FillRectangle(rcSelMargin, vs.styles[STYLE_DEFAULT].back.allocated);
else else
// Required because of special way brush is created for selection margin // Required because of special way brush is created for selection margin
surface->FillRectangle(rcSelMargin, pixmapSelPattern); surface->FillRectangle(rcSelMargin, pixmapSelPattern);
*/ */
if (vs.ms[margin].mask & SC_MASK_FOLDERS) if (vs.ms[margin].mask & SC_MASK_FOLDERS)
// Required because of special way brush is created for selection margin // Required because of special way brush is created for selection margin
@@ -1653,7 +1667,7 @@ void Editor::NotifyChar(char ch) {
txt[1] = '\0'; txt[1] = '\0';
NotifyMacroRecord(SCI_REPLACESEL, 0, reinterpret_cast<long>(txt)); NotifyMacroRecord(SCI_REPLACESEL, 0, reinterpret_cast<long>(txt));
} }
#endif #endif
} }
void Editor::NotifySavePoint(bool isSavePoint) { void Editor::NotifySavePoint(bool isSavePoint) {
@@ -1939,7 +1953,7 @@ void Editor::NotifyMacroRecord(unsigned int iMessage, unsigned long wParam, long
scn.lParam = lParam; scn.lParam = lParam;
NotifyParent(scn); NotifyParent(scn);
} }
#endif #endif
// Force scroll and keep position relative to top of window // Force scroll and keep position relative to top of window
void Editor::PageMove(int direction, bool extend) { void Editor::PageMove(int direction, bool extend) {
@@ -3019,7 +3033,7 @@ long Editor::WndProc(unsigned int iMessage, unsigned long wParam, long lParam) {
#ifdef MACRO_SUPPORT #ifdef MACRO_SUPPORT
if (recordingMacro) if (recordingMacro)
NotifyMacroRecord(iMessage, wParam, lParam); NotifyMacroRecord(iMessage, wParam, lParam);
#endif #endif
switch (iMessage) { switch (iMessage) {
@@ -3411,9 +3425,9 @@ long Editor::WndProc(unsigned int iMessage, unsigned long wParam, long lParam) {
return SEL_EMPTY; return SEL_EMPTY;
else else
return SEL_TEXT; return SEL_TEXT;
#else #else
return 0; return 0;
#endif #endif
case EM_HIDESELECTION: case EM_HIDESELECTION:
hideSelection = wParam; hideSelection = wParam;
@@ -3447,7 +3461,7 @@ long Editor::WndProc(unsigned int iMessage, unsigned long wParam, long lParam) {
vs.rightMarginWidth = vs.aveCharWidth / 2; vs.rightMarginWidth = vs.aveCharWidth / 2;
} }
InvalidateStyleRedraw(); InvalidateStyleRedraw();
#endif #endif
break; break;
case SCI_SETMARGINLEFT: case SCI_SETMARGINLEFT:
@@ -4238,10 +4252,10 @@ long Editor::WndProc(unsigned int iMessage, unsigned long wParam, long lParam) {
case SCI_SETOVERTYPE: case SCI_SETOVERTYPE:
inOverstrike = wParam; inOverstrike = wParam;
break; break;
case SCI_GETOVERTYPE: case SCI_GETOVERTYPE:
return inOverstrike ? TRUE : FALSE; return inOverstrike ? TRUE : FALSE;
#ifdef MACRO_SUPPORT #ifdef MACRO_SUPPORT
case SCI_STARTRECORD: case SCI_STARTRECORD:
recordingMacro = 1; recordingMacro = 1;
@@ -4250,7 +4264,7 @@ long Editor::WndProc(unsigned int iMessage, unsigned long wParam, long lParam) {
case SCI_STOPRECORD: case SCI_STOPRECORD:
recordingMacro = 0; recordingMacro = 0;
return 0; return 0;
#endif #endif
default: default:
return DefWndProc(iMessage, wParam, lParam); return DefWndProc(iMessage, wParam, lParam);

View File

@@ -1539,16 +1539,38 @@ void wxStyledTextCtrl::OnMouseRightUp(wxMouseEvent& evt) {
m_swx->DoContextMenu(Point(pt.x, pt.y)); m_swx->DoContextMenu(Point(pt.x, pt.y));
} }
void wxStyledTextCtrl::OnChar(wxKeyEvent& evt) { void wxStyledTextCtrl::OnChar(wxKeyEvent& evt) {
long key = evt.KeyCode(); long key = evt.KeyCode();
if ((key > WXK_ESCAPE) && switch (key) {
(key != WXK_DELETE) && (key < 255) && // Special handling for charcters that must be typed with AltGr down on
!evt.ControlDown() && !evt.AltDown()) { // 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 '<EFBFBD>':
case '[':
case ']':
case '{':
case '}':
case '?':
m_swx->DoAddChar(key);
break;
m_swx->DoAddChar(key); default:
} if ((key > WXK_ESCAPE) && (key != WXK_DELETE) && (key < 255) &&
else { !evt.ControlDown() && !evt.AltDown()) {
evt.Skip();
m_swx->DoAddChar(key);
}
else {
evt.Skip();
}
} }
} }
@@ -1561,6 +1583,7 @@ void wxStyledTextCtrl::OnKeyDown(wxKeyEvent& evt) {
evt.Skip(); evt.Skip();
} }
void wxStyledTextCtrl::OnLoseFocus(wxFocusEvent& evt) { void wxStyledTextCtrl::OnLoseFocus(wxFocusEvent& evt) {
m_swx->DoLoseFocus(); m_swx->DoLoseFocus();
} }