For my attempt to fix the problems in the gtk2 TabControl implementation I need some background information. Can anybody help me, or continue my started update?

In the first step I try to keep the dummy page, that is created together with the notebook widget, and use it for all tabs. I also managed to have the associated dummy tab invisible, but at sudden the implementation started to behave inconsistenly. Sometimes adding tabs (in code) works, but in most cases no tabs are shown at all. Reverting the code to the previously working implementation didn't help, so that it looks like some random behaviour, as known from uninitialized local variables.

Concrete questions:

- What's the purpose of the page widget, required in many gtk_notebook procedures?

- How is the page Handle defined and managed?
Is it the address of the associated gtk widget?

In my TabCtrl model I use a dummy LCL page (TCustomPage) to transfer parameters to the widgetset. In the Win32 widgetset I could prevent code from dealing with a page without an allocated Handle, but this seems to cause trouble with gtk2. Since now two dummy pages are used, one in the LCL code and one in the gtk2 code, can I assign the "handle" of the gtk2 dummy page widget to the LCL dummy page? How? Can I simply assign the pointer to the page widget to the TCustomPage.Handle?

- How does the gtk2 widgetset determine the ClientRect (of a notebook)?
The reported ClientWidth and ClientHeight look good (smaller than the notebook Width and Height), regardless of whether the added tabs are shown or invisible. Could it be that the client origin is wrong, i.e. the dummy page sits at the topleft of the control and makes the tabs invisible?

- When I put an button on a TabCtrl, at design time, that button also is visible at runtime, regardless of whether the tabs themselves are shown or invisible. This seems to indicate that the dummy page widget is the parent of the button.


I can upload the patch with the current state of my gtk2 modifications and a test program, that shows both a TPageControl and TNewTabControl side by side, for the verification that the modifications do not affect the behaviour of the page control.

DoDi

--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to