Problem with TGStatusBar

The patches have been done deeper in the code in the Cocoa backend.

Yes that is something to be considered as the Web Graphics will progressively replace the standard graphics. In principle it is straight forward. @linev can tell you how to proceed.

I have asked Timur (@tpochep) if what you see could be an other artefact of what we saw 6 months ago.

I have seen that what makes the display corrupted after clicking on the pad comes from the method Selected(fSelectedPad, fSelected, fEvent); called in TCanvas::Pick(Int_t px, Int_t py, TObject *prevSelObj) but I don’t know who is connected to this emitted signal

I just installed it on a M2 Mac with MacOs 14.5 (Beta) . I see the same problem.

Note: if you create a new browser from the “File” menu, Then that one is fine. It looks like your first Browser is different from the one created from the file menu.

@dudouet I had feed back from @tpochep . He will look soon at it. According to him "this must be, indeed, Cocoa-specific"

indeed, the initial browser has been developed manually by myself. The one by the file menu is starting a standard TBrowser


Some indications of what is causing this issue. The fact that at the starting of the program the statusbar is corrupted is due to the call of the Layout() method done after gSystem->ProcessEvents(); (I have to say that I even dont’t remember why I call gSystem->ProcessEvents(); (around line 380 of CXMainWindow.cxx), The Layout() is done in the ToggleTab method.

As I said before, the statusbar is also corrupted when I click on the canvas, due to the call of TCanvas::Selected(fSelectedPad, fSelected, fEvent); that is emitting the signal “Selected”. Is there a way to find which objects are connected to this signal to see what is done then ?

I guess @bellenot should know.

Yes, there is TList *TQObject::GetListOfConnections ()

But how do I need to use it ? Because this is not a static method.

TList *connections = gPad->GetListOfConnections();

1 Like

it returns me a nullptr :frowning:

Well, then I’ll have to investigate more, but not before next week…

I succeeded to make the statusbar working when clicking on it, by commenting the line fEditor->SetGlobal(kFALSE); (I have no idea what it is supposed to do…) but which is doing the connection with the TCanvas::Selected(fSelectedPad, fSelected, fEvent); method:

void TGedEditor::SetGlobal(Bool_t global)
   fGlobal = global;
   if (fGlobal) {
      TQObject::Connect("TCanvas", "Selected(TVirtualPad *, TObject *, Int_t)",
                        "TGedEditor", this, "GlobalSetModel(TVirtualPad *, TObject *, Int_t)");
      TQObject::Connect("TCanvas", "Closed()",
                        "TGedEditor", this, "GlobalClosed()");


I finally succeeded to make the status bar working adding this command on the status bar:


My understanding is that this is making ignore the Layout() method of the StatusBar.

But is that an understood behavior ? And is this command can generate some other problems that I have not seen for the moment ?

Thanks for your help


The behavior you see is maybe due to the way you build your GUI. I should check on another platform, but for that a small reproducer would be much better… And the SetLayoutBroken() method should not be used, since it disable the layout mechanism (IIRC it was introduced with the GUI Builder). One should find the origin of the issue, since it looks like it only happens after a MacOS update, and nothing changed in the ROOT GUI since quite a while. So it looks like a MacOS issue (again)

I agree, I will try to make a small reproducer

Concerning web-based GUI development.

One can do very basic widgets with RWebWindow class - see tutorials/webgui/webwindow or tutorials/webgui/ping.

One can use OpenUI5 to construct GUI. Simple example is tutorials/webgui/panel.

There is basic support of custom widgets in RBrowser, but no demo how they can be implemented and integrated. If there is interest - I can try to provide one.

Probably one can create more demos - if you have particular wishes and ideas.