hiding panel removes focus from any child
svn: r1003
This commit is contained in:
parent
ee1e6f6d0f
commit
4ccc351b3b
|
@ -196,6 +196,19 @@ void wxPanel::ChangeToGray(Bool gray)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxPanel::ReleaseAllFocus()
|
||||||
|
{
|
||||||
|
wxChildNode *cn;
|
||||||
|
wxChildList *cl;
|
||||||
|
cl = GetChildren();
|
||||||
|
for (cn = cl->First(); cn; cn = cn->Next()) {
|
||||||
|
wxWindow *w;
|
||||||
|
w = (wxWindow *)cn->Data();
|
||||||
|
w->ReleaseAllFocus();
|
||||||
|
}
|
||||||
|
ReleaseFocus();
|
||||||
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// positioning of items
|
// positioning of items
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
|
@ -69,6 +69,7 @@ public:
|
||||||
// drawing
|
// drawing
|
||||||
wxPanelDC* GetPanelDC(void) { return dc; }
|
wxPanelDC* GetPanelDC(void) { return dc; }
|
||||||
virtual void ChangeToGray(Bool gray);
|
virtual void ChangeToGray(Bool gray);
|
||||||
|
virtual void ReleaseAllFocus();
|
||||||
protected:
|
protected:
|
||||||
friend class wxButton; // allow access to default_item
|
friend class wxButton; // allow access to default_item
|
||||||
|
|
||||||
|
|
|
@ -753,8 +753,14 @@ void wxWindow::ChangeToGray(Bool gray)
|
||||||
if (XtIsSubclass(X->frame, xfwfEnforcerWidgetClass))
|
if (XtIsSubclass(X->frame, xfwfEnforcerWidgetClass))
|
||||||
XtVaSetValues(X->frame, XtNdrawgray, (Boolean)gray, NULL);
|
XtVaSetValues(X->frame, XtNdrawgray, (Boolean)gray, NULL);
|
||||||
|
|
||||||
|
if (gray)
|
||||||
|
ReleaseFocus();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxWindow::ReleaseFocus()
|
||||||
|
{
|
||||||
/* If disabling and this window has the focus, get rid of it: */
|
/* If disabling and this window has the focus, get rid of it: */
|
||||||
if (gray && (misc_flags & FOCUS_FLAG)) {
|
if (misc_flags & FOCUS_FLAG) {
|
||||||
wxWindow *p;
|
wxWindow *p;
|
||||||
p = GetParent();
|
p = GetParent();
|
||||||
while (p) {
|
while (p) {
|
||||||
|
@ -767,6 +773,11 @@ void wxWindow::ChangeToGray(Bool gray)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxWindow::ReleaseAllFocus()
|
||||||
|
{
|
||||||
|
ReleaseFocus();
|
||||||
|
}
|
||||||
|
|
||||||
Bool wxWindow::IsGray(void)
|
Bool wxWindow::IsGray(void)
|
||||||
{
|
{
|
||||||
return (misc_flags & DISABLED_FLAG) || internal_gray_disabled;
|
return (misc_flags & DISABLED_FLAG) || internal_gray_disabled;
|
||||||
|
@ -926,6 +937,9 @@ Bool wxWindow::Show(Bool show)
|
||||||
if (!X->handle) // forbid, if no widget associated
|
if (!X->handle) // forbid, if no widget associated
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
if (!show)
|
||||||
|
ReleaseAllFocus();
|
||||||
|
|
||||||
/* Get rid of or restore focus traversal */
|
/* Get rid of or restore focus traversal */
|
||||||
if (XtIsSubclass(X->frame, xfwfCommonWidgetClass))
|
if (XtIsSubclass(X->frame, xfwfCommonWidgetClass))
|
||||||
XtVaSetValues(X->frame, XtNtraversalOn, (Boolean)show, NULL);
|
XtVaSetValues(X->frame, XtNtraversalOn, (Boolean)show, NULL);
|
||||||
|
|
|
@ -159,6 +159,8 @@ public:
|
||||||
void MakeModal(int on);
|
void MakeModal(int on);
|
||||||
void InternalEnable(Bool enable, Bool gray = FALSE);
|
void InternalEnable(Bool enable, Bool gray = FALSE);
|
||||||
virtual void ChangeToGray(Bool gray);
|
virtual void ChangeToGray(Bool gray);
|
||||||
|
void ReleaseFocus();
|
||||||
|
virtual void ReleaseAllFocus();
|
||||||
Bool IsGray(void);
|
Bool IsGray(void);
|
||||||
|
|
||||||
Bool IsShown(void);
|
Bool IsShown(void);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user