Remove wxPGClipperWindow, use wxBORDER_NONE instead of wxNO_BORDER
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56055 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -1178,16 +1178,9 @@ public:
|
|||||||
const wxPGProperty* p2 ) const;
|
const wxPGProperty* p2 ) const;
|
||||||
|
|
||||||
/** Returns pointer to current active primary editor control (NULL if none).
|
/** Returns pointer to current active primary editor control (NULL if none).
|
||||||
|
|
||||||
If editor uses clipper window, pointer is returned to the actual
|
|
||||||
editor, not the clipper.
|
|
||||||
*/
|
*/
|
||||||
wxWindow* GetEditorControl() const;
|
wxWindow* GetEditorControl() const;
|
||||||
|
|
||||||
/** Adjusts given position if topCtrlWnd is child of clipper window.
|
|
||||||
*/
|
|
||||||
bool AdjustPosForClipperWindow( wxWindow* topCtrlWnd, int* x, int* y );
|
|
||||||
|
|
||||||
wxWindow* GetPrimaryEditor() const
|
wxWindow* GetPrimaryEditor() const
|
||||||
{
|
{
|
||||||
return GetEditorControl();
|
return GetEditorControl();
|
||||||
|
@@ -85,9 +85,6 @@
|
|||||||
|
|
||||||
#if defined(__WXMSW__)
|
#if defined(__WXMSW__)
|
||||||
// tested
|
// tested
|
||||||
#define wxPG_NAT_TEXTCTRL_BORDER_X 0 // Unremovable border of native textctrl.
|
|
||||||
#define wxPG_NAT_TEXTCTRL_BORDER_Y 0 // Unremovable border of native textctrl.
|
|
||||||
|
|
||||||
#define wxPG_NAT_BUTTON_BORDER_ANY 1
|
#define wxPG_NAT_BUTTON_BORDER_ANY 1
|
||||||
#define wxPG_NAT_BUTTON_BORDER_X 1
|
#define wxPG_NAT_BUTTON_BORDER_X 1
|
||||||
#define wxPG_NAT_BUTTON_BORDER_Y 1
|
#define wxPG_NAT_BUTTON_BORDER_Y 1
|
||||||
@@ -108,9 +105,6 @@
|
|||||||
#define wxPG_CHECKMARK_HADJ (-1)
|
#define wxPG_CHECKMARK_HADJ (-1)
|
||||||
#define wxPG_CHECKMARK_DEFLATE 3
|
#define wxPG_CHECKMARK_DEFLATE 3
|
||||||
|
|
||||||
#define wxPG_NAT_TEXTCTRL_BORDER_X 0 // Unremovable border of native textctrl.
|
|
||||||
#define wxPG_NAT_TEXTCTRL_BORDER_Y 0 // Unremovable border of native textctrl.
|
|
||||||
|
|
||||||
#define wxPG_NAT_BUTTON_BORDER_ANY 1
|
#define wxPG_NAT_BUTTON_BORDER_ANY 1
|
||||||
#define wxPG_NAT_BUTTON_BORDER_X 1
|
#define wxPG_NAT_BUTTON_BORDER_X 1
|
||||||
#define wxPG_NAT_BUTTON_BORDER_Y 1
|
#define wxPG_NAT_BUTTON_BORDER_Y 1
|
||||||
@@ -125,9 +119,6 @@
|
|||||||
#define wxPG_CHECKMARK_HADJ 0
|
#define wxPG_CHECKMARK_HADJ 0
|
||||||
#define wxPG_CHECKMARK_DEFLATE 0
|
#define wxPG_CHECKMARK_DEFLATE 0
|
||||||
|
|
||||||
#define wxPG_NAT_TEXTCTRL_BORDER_X 0 // Unremovable border of native textctrl.
|
|
||||||
#define wxPG_NAT_TEXTCTRL_BORDER_Y 0 // Unremovable border of native textctrl.
|
|
||||||
|
|
||||||
#define wxPG_NAT_BUTTON_BORDER_ANY 0
|
#define wxPG_NAT_BUTTON_BORDER_ANY 0
|
||||||
#define wxPG_NAT_BUTTON_BORDER_X 0
|
#define wxPG_NAT_BUTTON_BORDER_X 0
|
||||||
#define wxPG_NAT_BUTTON_BORDER_Y 0
|
#define wxPG_NAT_BUTTON_BORDER_Y 0
|
||||||
@@ -142,9 +133,6 @@
|
|||||||
#define wxPG_CHECKMARK_HADJ 0
|
#define wxPG_CHECKMARK_HADJ 0
|
||||||
#define wxPG_CHECKMARK_DEFLATE 0
|
#define wxPG_CHECKMARK_DEFLATE 0
|
||||||
|
|
||||||
#define wxPG_NAT_TEXTCTRL_BORDER_X 0 // Unremovable border of native textctrl.
|
|
||||||
#define wxPG_NAT_TEXTCTRL_BORDER_Y 0 // Unremovable border of native textctrl.
|
|
||||||
|
|
||||||
#define wxPG_NAT_BUTTON_BORDER_ANY 0
|
#define wxPG_NAT_BUTTON_BORDER_ANY 0
|
||||||
#define wxPG_NAT_BUTTON_BORDER_X 0
|
#define wxPG_NAT_BUTTON_BORDER_X 0
|
||||||
#define wxPG_NAT_BUTTON_BORDER_Y 0
|
#define wxPG_NAT_BUTTON_BORDER_Y 0
|
||||||
@@ -153,13 +141,6 @@
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (!wxPG_NAT_TEXTCTRL_BORDER_X && !wxPG_NAT_TEXTCTRL_BORDER_Y)
|
|
||||||
#define wxPG_ENABLE_CLIPPER_WINDOW 0
|
|
||||||
#else
|
|
||||||
#define wxPG_ENABLE_CLIPPER_WINDOW 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
// for odcombo
|
// for odcombo
|
||||||
#define wxPG_CHOICEXADJUST 0
|
#define wxPG_CHOICEXADJUST 0
|
||||||
#define wxPG_CHOICEYADJUST 0
|
#define wxPG_CHOICEYADJUST 0
|
||||||
@@ -224,199 +205,10 @@ bool wxPGEditor::CanContainCustomImage() const
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// -----------------------------------------------------------------------
|
|
||||||
// wxPGClipperWindow
|
|
||||||
// -----------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
#if wxPG_ENABLE_CLIPPER_WINDOW
|
|
||||||
|
|
||||||
//
|
|
||||||
// Clipper window is used to "remove" borders from controls
|
|
||||||
// which otherwise insist on having them despite of supplied
|
|
||||||
// wxNO_BORDER window style.
|
|
||||||
//
|
|
||||||
class wxPGClipperWindow : public wxWindow
|
|
||||||
{
|
|
||||||
DECLARE_CLASS(wxPGClipperWindow)
|
|
||||||
public:
|
|
||||||
|
|
||||||
wxPGClipperWindow()
|
|
||||||
: wxWindow()
|
|
||||||
{
|
|
||||||
wxPGClipperWindow::Init();
|
|
||||||
}
|
|
||||||
|
|
||||||
wxPGClipperWindow(wxWindow* parent,
|
|
||||||
wxWindowID id,
|
|
||||||
const wxPoint& pos = wxDefaultPosition,
|
|
||||||
const wxSize& size = wxDefaultSize)
|
|
||||||
{
|
|
||||||
Init();
|
|
||||||
Create(parent,id,pos,size);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Create(wxWindow* parent,
|
|
||||||
wxWindowID id,
|
|
||||||
const wxPoint& pos = wxDefaultPosition,
|
|
||||||
const wxSize& size = wxDefaultSize);
|
|
||||||
|
|
||||||
virtual ~wxPGClipperWindow();
|
|
||||||
|
|
||||||
virtual bool ProcessEvent(wxEvent& event);
|
|
||||||
|
|
||||||
inline wxWindow* GetControl() const { return m_ctrl; }
|
|
||||||
|
|
||||||
// This is called before wxControl is constructed.
|
|
||||||
void GetControlRect( int xadj, int yadj, wxPoint& pt, wxSize& sz );
|
|
||||||
|
|
||||||
// This is caleed after wxControl has been constructed.
|
|
||||||
void SetControl( wxWindow* ctrl );
|
|
||||||
|
|
||||||
virtual void Refresh( bool eraseBackground = true,
|
|
||||||
const wxRect *rect = (const wxRect *) NULL );
|
|
||||||
virtual void SetFocus();
|
|
||||||
|
|
||||||
virtual bool SetFont(const wxFont& font);
|
|
||||||
|
|
||||||
inline int GetXClip() const { return m_xadj; }
|
|
||||||
|
|
||||||
inline int GetYClip() const { return m_yadj; }
|
|
||||||
|
|
||||||
protected:
|
|
||||||
wxWindow* m_ctrl;
|
|
||||||
|
|
||||||
int m_xadj; // Horizontal border clip.
|
|
||||||
|
|
||||||
int m_yadj; // Vertical border clip.
|
|
||||||
|
|
||||||
private:
|
|
||||||
void Init ()
|
|
||||||
{
|
|
||||||
m_ctrl = (wxWindow*) NULL;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
IMPLEMENT_CLASS(wxPGClipperWindow,wxWindow)
|
|
||||||
|
|
||||||
|
|
||||||
// This is called before wxControl is constructed.
|
|
||||||
void wxPGClipperWindow::GetControlRect( int xadj, int yadj, wxPoint& pt, wxSize& sz )
|
|
||||||
{
|
|
||||||
m_xadj = xadj;
|
|
||||||
m_yadj = yadj;
|
|
||||||
pt.x = -xadj;
|
|
||||||
pt.y = -yadj;
|
|
||||||
wxSize own_size = GetSize();
|
|
||||||
sz.x = own_size.x+(xadj*2);
|
|
||||||
sz.y = own_size.y+(yadj*2);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// This is caleed after wxControl has been constructed.
|
|
||||||
void wxPGClipperWindow::SetControl( wxWindow* ctrl )
|
|
||||||
{
|
|
||||||
m_ctrl = ctrl;
|
|
||||||
|
|
||||||
// GTK requires this.
|
|
||||||
ctrl->SetSizeHints(3,3);
|
|
||||||
|
|
||||||
// Correct size of this window to match the child.
|
|
||||||
wxSize sz = GetSize();
|
|
||||||
wxSize chsz = ctrl->GetSize();
|
|
||||||
|
|
||||||
int hei_adj = chsz.y - (sz.y+(m_yadj*2));
|
|
||||||
if ( hei_adj )
|
|
||||||
SetSize(sz.x,chsz.y-(m_yadj*2));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void wxPGClipperWindow::Refresh( bool eraseBackground, const wxRect *rect )
|
|
||||||
{
|
|
||||||
wxWindow::Refresh(false,rect);
|
|
||||||
if ( m_ctrl )
|
|
||||||
m_ctrl->Refresh(eraseBackground);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Pass focus to control
|
|
||||||
void wxPGClipperWindow::SetFocus()
|
|
||||||
{
|
|
||||||
if ( m_ctrl )
|
|
||||||
m_ctrl->SetFocus();
|
|
||||||
else
|
|
||||||
wxWindow::SetFocus();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool wxPGClipperWindow::SetFont(const wxFont& font)
|
|
||||||
{
|
|
||||||
bool res = wxWindow::SetFont(font);
|
|
||||||
if ( m_ctrl )
|
|
||||||
return m_ctrl->SetFont(font);
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void wxPGClipperWindow::Create(wxWindow* parent,
|
|
||||||
wxWindowID id,
|
|
||||||
const wxPoint& pos,
|
|
||||||
const wxSize& size )
|
|
||||||
{
|
|
||||||
wxWindow::Create(parent,id,pos,size);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
wxPGClipperWindow::~wxPGClipperWindow()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool wxPGClipperWindow::ProcessEvent(wxEvent& event)
|
|
||||||
{
|
|
||||||
if ( event.GetEventType() == wxEVT_SIZE )
|
|
||||||
{
|
|
||||||
if ( m_ctrl )
|
|
||||||
{
|
|
||||||
// Maintain correct size relationship.
|
|
||||||
wxSize sz = GetSize();
|
|
||||||
m_ctrl->SetSize(sz.x+(m_xadj*2),sz.y+(m_yadj*2));
|
|
||||||
event.Skip();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return wxWindow::ProcessEvent(event);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // wxPG_ENABLE_CLIPPER_WINDOW
|
|
||||||
|
|
||||||
/*wxWindow* wxPropertyGrid::GetActualEditorControl( wxWindow* ctrl )
|
|
||||||
{
|
|
||||||
#if wxPG_ENABLE_CLIPPER_WINDOW
|
|
||||||
// Pass real control instead of clipper window
|
|
||||||
if ( ctrl->IsKindOf(CLASSINFO(wxPGClipperWindow)) )
|
|
||||||
{
|
|
||||||
return ((wxPGClipperWindow*)ctrl)->GetControl();
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
return ctrl;
|
|
||||||
#endif
|
|
||||||
}*/
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------
|
// -----------------------------------------------------------------------
|
||||||
// wxPGTextCtrlEditor
|
// wxPGTextCtrlEditor
|
||||||
// -----------------------------------------------------------------------
|
// -----------------------------------------------------------------------
|
||||||
|
|
||||||
// Clipper window support macro (depending on whether it is used
|
|
||||||
// for this editor or not)
|
|
||||||
#if wxPG_NAT_TEXTCTRL_BORDER_X || wxPG_NAT_TEXTCTRL_BORDER_Y
|
|
||||||
#define wxPG_NAT_TEXTCTRL_BORDER_ANY 1
|
|
||||||
#else
|
|
||||||
#define wxPG_NAT_TEXTCTRL_BORDER_ANY 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
WX_PG_IMPLEMENT_EDITOR_CLASS(TextCtrl,wxPGTextCtrlEditor,wxPGEditor)
|
WX_PG_IMPLEMENT_EDITOR_CLASS(TextCtrl,wxPGTextCtrlEditor,wxPGEditor)
|
||||||
|
|
||||||
|
|
||||||
@@ -1017,7 +809,7 @@ wxWindow* wxPGChoiceEditor::CreateControlsBase( wxPropertyGrid* propGrid,
|
|||||||
si.x -= wxPG_CHOICEXADJUST;
|
si.x -= wxPG_CHOICEXADJUST;
|
||||||
wxWindow* ctrlParent = propGrid->GetPanel();
|
wxWindow* ctrlParent = propGrid->GetPanel();
|
||||||
|
|
||||||
int odcbFlags = extraStyle | wxNO_BORDER | wxTE_PROCESS_ENTER;
|
int odcbFlags = extraStyle | wxBORDER_NONE | wxTE_PROCESS_ENTER;
|
||||||
|
|
||||||
//
|
//
|
||||||
// If common value specified, use appropriate index
|
// If common value specified, use appropriate index
|
||||||
@@ -1432,7 +1224,7 @@ public:
|
|||||||
wxWindowID id,
|
wxWindowID id,
|
||||||
const wxPoint& pos = wxDefaultPosition,
|
const wxPoint& pos = wxDefaultPosition,
|
||||||
const wxSize& size = wxDefaultSize )
|
const wxSize& size = wxDefaultSize )
|
||||||
: wxControl(parent,id,pos,size,wxNO_BORDER|wxWANTS_CHARS)
|
: wxControl(parent,id,pos,size,wxBORDER_NONE|wxWANTS_CHARS)
|
||||||
{
|
{
|
||||||
// Due to SetOwnFont stuff necessary for GTK+ 1.2, we need to have this
|
// Due to SetOwnFont stuff necessary for GTK+ 1.2, we need to have this
|
||||||
SetFont( parent->GetFont() );
|
SetFont( parent->GetFont() );
|
||||||
@@ -1738,14 +1530,6 @@ wxWindow* wxPropertyGrid::GetEditorControl() const
|
|||||||
if ( !ctrl )
|
if ( !ctrl )
|
||||||
return ctrl;
|
return ctrl;
|
||||||
|
|
||||||
// If it's clipper window, return its child instead
|
|
||||||
#if wxPG_ENABLE_CLIPPER_WINDOW
|
|
||||||
if ( ctrl->IsKindOf(CLASSINFO(wxPGClipperWindow)) )
|
|
||||||
{
|
|
||||||
return ((wxPGClipperWindow*)ctrl)->GetControl();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return ctrl;
|
return ctrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1823,29 +1607,6 @@ void wxPropertyGrid::CorrectEditorWidgetPosY()
|
|||||||
|
|
||||||
// -----------------------------------------------------------------------
|
// -----------------------------------------------------------------------
|
||||||
|
|
||||||
bool wxPropertyGrid::AdjustPosForClipperWindow( wxWindow* topCtrlWnd, int* x, int* y )
|
|
||||||
{
|
|
||||||
#if wxPG_ENABLE_CLIPPER_WINDOW
|
|
||||||
// Take clipper window into account
|
|
||||||
if (topCtrlWnd->GetPosition().x < 1 &&
|
|
||||||
!topCtrlWnd->IsKindOf(CLASSINFO(wxPGClipperWindow)))
|
|
||||||
{
|
|
||||||
topCtrlWnd = topCtrlWnd->GetParent();
|
|
||||||
wxASSERT( topCtrlWnd->IsKindOf(CLASSINFO(wxPGClipperWindow)) );
|
|
||||||
*x -= ((wxPGClipperWindow*)topCtrlWnd)->GetXClip();
|
|
||||||
*y -= ((wxPGClipperWindow*)topCtrlWnd)->GetYClip();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
wxUnusedVar(topCtrlWnd);
|
|
||||||
wxUnusedVar(x);
|
|
||||||
wxUnusedVar(y);
|
|
||||||
#endif
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------
|
|
||||||
|
|
||||||
// Fixes position of wxTextCtrl-like control (wxSpinCtrl usually
|
// Fixes position of wxTextCtrl-like control (wxSpinCtrl usually
|
||||||
// fits into that category as well).
|
// fits into that category as well).
|
||||||
void wxPropertyGrid::FixPosForTextCtrl( wxWindow* ctrl, const wxPoint& offset )
|
void wxPropertyGrid::FixPosForTextCtrl( wxWindow* ctrl, const wxPoint& offset )
|
||||||
@@ -1911,46 +1672,20 @@ wxWindow* wxPropertyGrid::GenerateEditorTextCtrl( const wxPoint& pos,
|
|||||||
if ( (sz.y - m_lineHeight) > 5 )
|
if ( (sz.y - m_lineHeight) > 5 )
|
||||||
hasSpecialSize = true;
|
hasSpecialSize = true;
|
||||||
|
|
||||||
#if wxPG_NAT_TEXTCTRL_BORDER_ANY
|
|
||||||
|
|
||||||
// Create clipper window
|
|
||||||
wxPGClipperWindow* wnd = new wxPGClipperWindow();
|
|
||||||
#if defined(__WXMSW__)
|
|
||||||
wnd->Hide();
|
|
||||||
#endif
|
|
||||||
wnd->Create(GetPanel(),id,p,s);
|
|
||||||
|
|
||||||
// This generates rect of the control inside the clipper window
|
|
||||||
if ( !hasSpecialSize )
|
|
||||||
wnd->GetControlRect(wxPG_NAT_TEXTCTRL_BORDER_X, wxPG_NAT_TEXTCTRL_BORDER_Y, p, s);
|
|
||||||
else
|
|
||||||
wnd->GetControlRect(0, 0, p, s);
|
|
||||||
|
|
||||||
wxWindow* ctrlParent = wnd;
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
wxWindow* ctrlParent = GetPanel();
|
wxWindow* ctrlParent = GetPanel();
|
||||||
|
|
||||||
if ( !hasSpecialSize )
|
if ( !hasSpecialSize )
|
||||||
tcFlags |= wxNO_BORDER;
|
tcFlags |= wxBORDER_NONE;
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
wxTextCtrl* tc = new wxTextCtrl();
|
wxTextCtrl* tc = new wxTextCtrl();
|
||||||
|
|
||||||
#if defined(__WXMSW__) && !wxPG_NAT_TEXTCTRL_BORDER_ANY
|
#if defined(__WXMSW__)
|
||||||
tc->Hide();
|
tc->Hide();
|
||||||
#endif
|
#endif
|
||||||
SetupTextCtrlValue(value);
|
SetupTextCtrlValue(value);
|
||||||
tc->Create(ctrlParent,id,value, p, s,tcFlags);
|
tc->Create(ctrlParent,id,value, p, s,tcFlags);
|
||||||
|
|
||||||
#if wxPG_NAT_TEXTCTRL_BORDER_ANY
|
|
||||||
wxWindow* ed = wnd;
|
|
||||||
wnd->SetControl(tc);
|
|
||||||
#else
|
|
||||||
wxWindow* ed = tc;
|
wxWindow* ed = tc;
|
||||||
#endif
|
|
||||||
|
|
||||||
// Center the control vertically
|
// Center the control vertically
|
||||||
if ( !hasSpecialSize )
|
if ( !hasSpecialSize )
|
||||||
|
@@ -4789,8 +4789,6 @@ bool wxPropertyGrid::OnMouseChildCommon( wxMouseEvent &event, int* px, int *py )
|
|||||||
int x, y;
|
int x, y;
|
||||||
event.GetPosition(&x,&y);
|
event.GetPosition(&x,&y);
|
||||||
|
|
||||||
AdjustPosForClipperWindow( topCtrlWnd, &x, &y );
|
|
||||||
|
|
||||||
int splitterX = GetSplitterPosition();
|
int splitterX = GetSplitterPosition();
|
||||||
|
|
||||||
wxRect r = topCtrlWnd->GetRect();
|
wxRect r = topCtrlWnd->GetRect();
|
||||||
|
Reference in New Issue
Block a user