From 73161598d79a62dc009e87db7950a4d43b4599ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Sun, 25 Jan 2009 22:18:44 +0000 Subject: [PATCH] * BTextControl is kept navigable to be handled correctly by BControl::SetEnabled(). MakeFocus() transfers anyway the focus on its textview. * BControl::SetEnabled() now calls SetFlags(), BTextControl::SetFlags() is then correctly called. * BControl::SetEnabled() now uses fWantsNav to know if B_NAVIGABLE should be restored git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29028 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/interface/Control.cpp | 13 ++++++++----- src/kits/interface/TextControl.cpp | 10 ++-------- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/kits/interface/Control.cpp b/src/kits/interface/Control.cpp index d42f88ddd9..431e0444b9 100644 --- a/src/kits/interface/Control.cpp +++ b/src/kits/interface/Control.cpp @@ -344,10 +344,13 @@ BControl::SetEnabled(bool enabled) fEnabled = enabled; - if (fEnabled) - BView::SetFlags(Flags() | B_NAVIGABLE); - else - BView::SetFlags(Flags() & ~B_NAVIGABLE); + if (fEnabled && fWantsNav) + SetFlags(Flags() | B_NAVIGABLE); + else if (!fEnabled && (Flags() & B_NAVIGABLE)) { + fWantsNav = true; + SetFlags(Flags() & ~B_NAVIGABLE); + } else + fWantsNav = false; if (Window()) { Invalidate(Bounds()); @@ -552,7 +555,7 @@ BControl::InitData(BMessage *data) fEnabled = true; fFocusChanging = false; fTracking = false; - fWantsNav = true; + fWantsNav = Flags() & B_NAVIGABLE; if (data && data->HasString("_fname")) SetFont(be_plain_font, B_FONT_FAMILY_AND_STYLE); diff --git a/src/kits/interface/TextControl.cpp b/src/kits/interface/TextControl.cpp index 8cadbf5613..82d869e79c 100644 --- a/src/kits/interface/TextControl.cpp +++ b/src/kits/interface/TextControl.cpp @@ -11,8 +11,6 @@ /*! BTextControl displays text that can act like a control. */ -#include - #include #include #include @@ -27,6 +25,7 @@ //#define TRACE_TEXT_CONTROL #ifdef TRACE_TEXT_CONTROL +# include # include static int32 sFunctionDepth = -1; # define CALLED(x...) FunctionTracer _ft("BTextControl", __FUNCTION__, \ @@ -512,10 +511,7 @@ BTextControl::SetFlags(uint32 flags) if (flags & B_NAVIGABLE) fText->SetFlags(fText->Flags() | B_NAVIGABLE); } - - // Don't make this one navigable - flags &= ~B_NAVIGABLE; - + BView::SetFlags(flags); } @@ -929,8 +925,6 @@ BTextControl::_InitData(const char* label, const char* initialText, fDivider = floorf(bounds.Width() / 2.0f); uint32 navigableFlags = Flags() & B_NAVIGABLE; - if (navigableFlags != 0) - BView::SetFlags(Flags() & ~B_NAVIGABLE); if (archive) fText = static_cast(FindView("_input_"));