im working on crearte new type of component (when it will be done ill post code somewhere there or create "pull-request")
so main problem is that i found is that i can not extend TabbedComponent::ButtonBar becouse it is private class. 

i just wont know reason of that decision - why it was done like that? 

suggestion would be update it and create protected - to be posible extend it - becouse for me there is need to add to it DragAndDropTarget behavior.


or maybe there is some othere solution for that?

We use a TabbedButtonBar in tracktion, where we have fully draggable/detachable panels, so it can certainly be done.

And the reason that implementations like this are kept private is to stop people doing what you're asking for here! If people could write code that is tightly-coupled to the precise way that these classes work internally, then its internal implementation could never be changed without breaking user code.

how you detect when you have dropped / draggigngover TabbedButtonBar and not to TabbedComponent?

BTW: im not expert in C++, it is just hobby-for-fun, main job is UI/UX engineer, and working for webApps.

based on that - maybe i dont see some basic solution.. 

so idea is create something like default behavior  in all "tabbed" apps (google chrome, sublime text...) when you drag over TabBar - tabs just change  "index", and dragImage moves only by x-point, and add some space between tabs, when you bove mouse cursor out - then fires some custom event, and tab is deatached, and can be dropped somewhere (other tabbed component)

You can create a subclass of TabbedButtonBar which is also a DragAndDropTarget. And you can create custom tab buttons which allow themselves to be dragged.

based on that, i need to recreate TabbedComponent, where i will use my custom tabbedButtonBar, and reimplement (copy/paste) all behaviors from TabbedComponent