class MainWindow{
public:
    EditAreaHolder *EAHolder;
    GtkWindow *Window;
    FilePanel *FP;
    HeaderBar *Headerbar;
    GtkGrid *WindowGrid;
    GtkSeparator *Separator;
};

MainWindow class is not a gtk widget. The window you see is GtkWindow *Window under the class.

Core.cpp contains a variable called AppWindow. Everytime you need to get the MainWindow of the app, use GetAppWindow() and it will return the reference of AppWindow.The loading of the variables inMainWindow is done by function void NewWindow (GtkApplication *app,gpointer user_data). Only one MainWindow is need for one app so we do not create a constructor for it.

A MainWindow consist a HeaderBar *Headerbar at the top. and GtkGrid *WindowGrid in the middle. WindowGrid has a EditAreaHolder *EAHolder and FilePanel *FP.

When the user drags Separator. SeparatorDragUpdate() will be called and resize the basegrid of file panel.

UI Content

CSS

#MainWindow

.Separator