Make it easier to not use wxPopupWindow in wxSTC, and for now, don't

use it at all for the AutoComplete window.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15356 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn 2002-05-03 23:30:40 +00:00
parent 9085d634d9
commit 9c46ea6647
10 changed files with 88 additions and 18 deletions

View File

@ -24,6 +24,13 @@
#include <wx/wx.h> #include <wx/wx.h>
#include <wx/dnd.h> #include <wx/dnd.h>
//----------------------------------------------------------------------
// Should a wxPopupWindow be used for the call tips and autocomplete windows?
#ifndef wxSTC_USE_POPUP
#define wxSTC_USE_POPUP 1
#endif
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// BEGIN generated section. The following code is automatically generated // BEGIN generated section. The following code is automatically generated
// by gen_iface.py. Do not edit this file. Edit stc.h.in instead // by gen_iface.py. Do not edit this file. Edit stc.h.in instead

View File

@ -673,19 +673,20 @@ BEGIN_EVENT_TABLE(wxSTCListBox, wxListBox)
EVT_SET_FOCUS(wxSTCListBox::OnFocus) EVT_SET_FOCUS(wxSTCListBox::OnFocus)
END_EVENT_TABLE() END_EVENT_TABLE()
#undef wxSTC_USE_POPUP
#define wxSTC_USE_POPUP 0 // Leave it off for this one...
// A window to place the listbox upon. If wxPopupWindow is supported then // A window to place the listbox upon. If wxPopupWindow is supported then
// that will be used so the listbox can extend beyond the client area of the // that will be used so the listbox can extend beyond the client area of the
// wxSTC if needed. // wxSTC if needed.
#if wxUSE_POPUPWIN && wxSTC_USE_POPUP
#if wxUSE_POPUPWIN
#include <wx/popupwin.h> #include <wx/popupwin.h>
#define wxSTCListBoxWinBase wxPopupWindow #define wxSTCListBoxWinBase wxPopupWindow
#define param2 wxBORDER_NONE // popup's 2nd param is flags #define param2 wxBORDER_NONE // popup's 2nd param is flags
#else #else
#define wxSTCListBoxWinBase wxWindow #define wxSTCListBoxWinBase wxWindow
#define param2 -1 // wxWindows 2nd param is ID #define param2 -1 // wxWindow's 2nd param is ID
#endif #endif
class wxSTCListBoxWin : public wxSTCListBoxWinBase { class wxSTCListBoxWin : public wxSTCListBoxWinBase {
@ -693,6 +694,7 @@ public:
wxSTCListBoxWin(wxWindow* parent, wxWindowID id) wxSTCListBoxWin(wxWindow* parent, wxWindowID id)
: wxSTCListBoxWinBase(parent, param2) { : wxSTCListBoxWinBase(parent, param2) {
lb = new wxSTCListBox(this, id); lb = new wxSTCListBox(this, id);
lb->SetCursor(wxCursor(wxCURSOR_ARROW));
} }
void OnSize(wxSizeEvent& event) { void OnSize(wxSizeEvent& event) {
@ -703,9 +705,9 @@ public:
event.Skip(); event.Skip();
} }
wxListBox* GetLB() { return lb; } wxListBox* GetLB() { return lb; }
#if wxUSE_POPUPWIN #if wxUSE_POPUPWIN && wxSTC_USE_POPUP
virtual void DoSetSize(int x, int y, virtual void DoSetSize(int x, int y,
int width, int height, int width, int height,
int sizeFlags = wxSIZE_AUTO) { int sizeFlags = wxSIZE_AUTO) {
@ -755,8 +757,8 @@ PRectangle ListBox::GetDesiredRect() {
rc.left = 0; rc.left = 0;
if (sz.x > 400) if (sz.x > 400)
sz.x = 400; sz.x = 400;
if (sz.y > 160) // TODO: Use desiredVisibleRows?? if (sz.y > 140) // TODO: Use desiredVisibleRows??
sz.y = 160; sz.y = 140;
rc.right = sz.x; rc.right = sz.x;
rc.bottom = sz.y; rc.bottom = sz.y;
return rc; return rc;

View File

@ -63,7 +63,7 @@ void wxSTCDropTarget::OnLeave() {
#endif #endif
#if wxUSE_POPUPWIN #if wxUSE_POPUPWIN && wxSTC_USE_POPUP
#include <wx/popupwin.h> #include <wx/popupwin.h>
#define wxSTCCallTipBase wxPopupWindow #define wxSTCCallTipBase wxPopupWindow
#define param2 wxBORDER_NONE // popup's 2nd param is flags #define param2 wxBORDER_NONE // popup's 2nd param is flags
@ -88,7 +88,7 @@ public:
delete surfaceWindow; delete surfaceWindow;
} }
#if wxUSE_POPUPWIN #if wxUSE_POPUPWIN && wxSTC_USE_POPUP
virtual void DoSetSize(int x, int y, virtual void DoSetSize(int x, int y,
int width, int height, int width, int height,
int sizeFlags = wxSIZE_AUTO) { int sizeFlags = wxSIZE_AUTO) {
@ -98,6 +98,21 @@ public:
GetParent()->ClientToScreen(NULL, &y); GetParent()->ClientToScreen(NULL, &y);
wxSTCCallTipBase::DoSetSize(x, y, width, height, sizeFlags); wxSTCCallTipBase::DoSetSize(x, y, width, height, sizeFlags);
} }
virtual bool Show( bool show = TRUE ) {
bool retval = wxSTCCallTipBase::Show(show);
if (show) {
CaptureMouse();
}
else {
ReleaseMouse();
}
return retval;
}
void OnLeftDown(wxMouseEvent& ) {
Show(FALSE);
}
#endif #endif
private: private:
@ -107,6 +122,9 @@ private:
BEGIN_EVENT_TABLE(wxSTCCallTip, wxSTCCallTipBase) BEGIN_EVENT_TABLE(wxSTCCallTip, wxSTCCallTipBase)
EVT_PAINT(wxSTCCallTip::OnPaint) EVT_PAINT(wxSTCCallTip::OnPaint)
#if wxUSE_POPUPWIN && wxSTC_USE_POPUP
EVT_LEFT_DOWN(wxSTCCallTip::OnLeftDown)
#endif
END_EVENT_TABLE() END_EVENT_TABLE()

View File

@ -24,6 +24,13 @@
#include <wx/wx.h> #include <wx/wx.h>
#include <wx/dnd.h> #include <wx/dnd.h>
//----------------------------------------------------------------------
// Should a wxPopupWindow be used for the call tips and autocomplete windows?
#ifndef wxSTC_USE_POPUP
#define wxSTC_USE_POPUP 1
#endif
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// BEGIN generated section. The following code is automatically generated // BEGIN generated section. The following code is automatically generated
// by gen_iface.py. Do not edit this file. Edit stc.h.in instead // by gen_iface.py. Do not edit this file. Edit stc.h.in instead

View File

@ -24,6 +24,13 @@
#include <wx/wx.h> #include <wx/wx.h>
#include <wx/dnd.h> #include <wx/dnd.h>
//----------------------------------------------------------------------
// Should a wxPopupWindow be used for the call tips and autocomplete windows?
#ifndef wxSTC_USE_POPUP
#define wxSTC_USE_POPUP 1
#endif
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// BEGIN generated section. The following code is automatically generated // BEGIN generated section. The following code is automatically generated
// by gen_iface.py. Do not edit this file. Edit stc.h.in instead // by gen_iface.py. Do not edit this file. Edit stc.h.in instead

View File

@ -673,19 +673,20 @@ BEGIN_EVENT_TABLE(wxSTCListBox, wxListBox)
EVT_SET_FOCUS(wxSTCListBox::OnFocus) EVT_SET_FOCUS(wxSTCListBox::OnFocus)
END_EVENT_TABLE() END_EVENT_TABLE()
#undef wxSTC_USE_POPUP
#define wxSTC_USE_POPUP 0 // Leave it off for this one...
// A window to place the listbox upon. If wxPopupWindow is supported then // A window to place the listbox upon. If wxPopupWindow is supported then
// that will be used so the listbox can extend beyond the client area of the // that will be used so the listbox can extend beyond the client area of the
// wxSTC if needed. // wxSTC if needed.
#if wxUSE_POPUPWIN && wxSTC_USE_POPUP
#if wxUSE_POPUPWIN
#include <wx/popupwin.h> #include <wx/popupwin.h>
#define wxSTCListBoxWinBase wxPopupWindow #define wxSTCListBoxWinBase wxPopupWindow
#define param2 wxBORDER_NONE // popup's 2nd param is flags #define param2 wxBORDER_NONE // popup's 2nd param is flags
#else #else
#define wxSTCListBoxWinBase wxWindow #define wxSTCListBoxWinBase wxWindow
#define param2 -1 // wxWindows 2nd param is ID #define param2 -1 // wxWindow's 2nd param is ID
#endif #endif
class wxSTCListBoxWin : public wxSTCListBoxWinBase { class wxSTCListBoxWin : public wxSTCListBoxWinBase {
@ -693,6 +694,7 @@ public:
wxSTCListBoxWin(wxWindow* parent, wxWindowID id) wxSTCListBoxWin(wxWindow* parent, wxWindowID id)
: wxSTCListBoxWinBase(parent, param2) { : wxSTCListBoxWinBase(parent, param2) {
lb = new wxSTCListBox(this, id); lb = new wxSTCListBox(this, id);
lb->SetCursor(wxCursor(wxCURSOR_ARROW));
} }
void OnSize(wxSizeEvent& event) { void OnSize(wxSizeEvent& event) {
@ -703,9 +705,9 @@ public:
event.Skip(); event.Skip();
} }
wxListBox* GetLB() { return lb; } wxListBox* GetLB() { return lb; }
#if wxUSE_POPUPWIN #if wxUSE_POPUPWIN && wxSTC_USE_POPUP
virtual void DoSetSize(int x, int y, virtual void DoSetSize(int x, int y,
int width, int height, int width, int height,
int sizeFlags = wxSIZE_AUTO) { int sizeFlags = wxSIZE_AUTO) {
@ -755,8 +757,8 @@ PRectangle ListBox::GetDesiredRect() {
rc.left = 0; rc.left = 0;
if (sz.x > 400) if (sz.x > 400)
sz.x = 400; sz.x = 400;
if (sz.y > 160) // TODO: Use desiredVisibleRows?? if (sz.y > 140) // TODO: Use desiredVisibleRows??
sz.y = 160; sz.y = 140;
rc.right = sz.x; rc.right = sz.x;
rc.bottom = sz.y; rc.bottom = sz.y;
return rc; return rc;

View File

@ -63,7 +63,7 @@ void wxSTCDropTarget::OnLeave() {
#endif #endif
#if wxUSE_POPUPWIN #if wxUSE_POPUPWIN && wxSTC_USE_POPUP
#include <wx/popupwin.h> #include <wx/popupwin.h>
#define wxSTCCallTipBase wxPopupWindow #define wxSTCCallTipBase wxPopupWindow
#define param2 wxBORDER_NONE // popup's 2nd param is flags #define param2 wxBORDER_NONE // popup's 2nd param is flags
@ -88,7 +88,7 @@ public:
delete surfaceWindow; delete surfaceWindow;
} }
#if wxUSE_POPUPWIN #if wxUSE_POPUPWIN && wxSTC_USE_POPUP
virtual void DoSetSize(int x, int y, virtual void DoSetSize(int x, int y,
int width, int height, int width, int height,
int sizeFlags = wxSIZE_AUTO) { int sizeFlags = wxSIZE_AUTO) {
@ -98,6 +98,21 @@ public:
GetParent()->ClientToScreen(NULL, &y); GetParent()->ClientToScreen(NULL, &y);
wxSTCCallTipBase::DoSetSize(x, y, width, height, sizeFlags); wxSTCCallTipBase::DoSetSize(x, y, width, height, sizeFlags);
} }
virtual bool Show( bool show = TRUE ) {
bool retval = wxSTCCallTipBase::Show(show);
if (show) {
CaptureMouse();
}
else {
ReleaseMouse();
}
return retval;
}
void OnLeftDown(wxMouseEvent& ) {
Show(FALSE);
}
#endif #endif
private: private:
@ -107,6 +122,9 @@ private:
BEGIN_EVENT_TABLE(wxSTCCallTip, wxSTCCallTipBase) BEGIN_EVENT_TABLE(wxSTCCallTip, wxSTCCallTipBase)
EVT_PAINT(wxSTCCallTip::OnPaint) EVT_PAINT(wxSTCCallTip::OnPaint)
#if wxUSE_POPUPWIN && wxSTC_USE_POPUP
EVT_LEFT_DOWN(wxSTCCallTip::OnLeftDown)
#endif
END_EVENT_TABLE() END_EVENT_TABLE()

View File

@ -24,6 +24,13 @@
#include <wx/wx.h> #include <wx/wx.h>
#include <wx/dnd.h> #include <wx/dnd.h>
//----------------------------------------------------------------------
// Should a wxPopupWindow be used for the call tips and autocomplete windows?
#ifndef wxSTC_USE_POPUP
#define wxSTC_USE_POPUP 1
#endif
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// BEGIN generated section. The following code is automatically generated // BEGIN generated section. The following code is automatically generated
// by gen_iface.py. Do not edit this file. Edit stc.h.in instead // by gen_iface.py. Do not edit this file. Edit stc.h.in instead

View File

@ -11032,6 +11032,7 @@ SWIGEXPORT(void) initstc_c() {
SWIG_globals = SWIG_newvarlink(); SWIG_globals = SWIG_newvarlink();
m = Py_InitModule("stc_c", stc_cMethods); m = Py_InitModule("stc_c", stc_cMethods);
d = PyModule_GetDict(m); d = PyModule_GetDict(m);
PyDict_SetItemString(d,"wxSTC_USE_POPUP", PyInt_FromLong((long) 1));
PyDict_SetItemString(d,"wxSTC_INVALID_POSITION", PyInt_FromLong((long) -1)); PyDict_SetItemString(d,"wxSTC_INVALID_POSITION", PyInt_FromLong((long) -1));
PyDict_SetItemString(d,"wxSTC_START", PyInt_FromLong((long) 2000)); PyDict_SetItemString(d,"wxSTC_START", PyInt_FromLong((long) 2000));
PyDict_SetItemString(d,"wxSTC_OPTIONAL_START", PyInt_FromLong((long) 3000)); PyDict_SetItemString(d,"wxSTC_OPTIONAL_START", PyInt_FromLong((long) 3000));

View File

@ -1158,6 +1158,7 @@ class wxStyledTextEvent(wxStyledTextEventPtr):
#-------------- VARIABLE WRAPPERS ------------------ #-------------- VARIABLE WRAPPERS ------------------
wxSTC_USE_POPUP = stc_c.wxSTC_USE_POPUP
wxSTC_INVALID_POSITION = stc_c.wxSTC_INVALID_POSITION wxSTC_INVALID_POSITION = stc_c.wxSTC_INVALID_POSITION
wxSTC_START = stc_c.wxSTC_START wxSTC_START = stc_c.wxSTC_START
wxSTC_OPTIONAL_START = stc_c.wxSTC_OPTIONAL_START wxSTC_OPTIONAL_START = stc_c.wxSTC_OPTIONAL_START