[haiku-development] Issues customizing BTabView

  • From: Kacper Kasper <kacperkasper@xxxxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Sun, 15 Apr 2018 18:11:07 +0200

Hello,

I have been recently working on fixing Yab after my changes to use
native BTabView and remove dependency on the unstable BControlLook.

Without going into too much detail:
Yab uses view names to reference them in scripts. BTab doesn't have
storage for labels, instead it uses view's name as display label. That
is a problem, since SetLabel is going to change that name and cause
inconsistencies in Yab's internal view index.

First thing I tried to do was setting the name back after calling
SetLabel, but that obviously doesn't work, because I don't want to
display view's internal name.
Second thing I tried to do was subclassing BTab to have it's own
fLabel property and use that to render. I overloaded Label and
SetLabel, but that doesn't work either because Label is not virtual.
I'd have to overload DrawLabel which defeats the purpose, since it
introduces dependency on BControlLook again.

I see three solutions here:
1) decouple view name and label in default BTab by giving it its own
label storage;
2) make BTab::Label() virtual;
3) declare BControlLook stable.

Is there another way to solve this? If not, which is preferable and
what problems do you see with any of those approaches (backward
compatibility, etc.)?

Thanks,
Kacper

Other related posts: