summaryrefslogtreecommitdiff
path: root/gtk/notes
blob: 0944db9e5e78e9e465c6c4e4794961af92ecfb77 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Currently a gui_window is a top level browser object.

This has to be corrected. Instead a gui_window must simply be a render
target inside a non-user-sizable container which is capable of
scrolling around. I.E. a GtkViewport.

Thusly all routines which are callbacks for the viewport can remain
attached to a gui_window, all others must be migrated to a
gtk_scaffold concept which embodies the toolbar, statusbar,
blahblahblah.

If a gui_window wants to be able to scroll itself, it automatically
embeds itself in a GtkScrolledWindow which will provide scrollbars for
it. Otherwise it makes a call to its scaffold to ask it to attach its
scrollbars to the viewport.

The gui_window objects therefore are a GtkDrawingArea inside a
GtkFixed inside a GtkViewport (optionally inside a GtkScrolledWindow)
The GtkFixed's job (among other things) is to sit on its size_allocate
event and ensure that the GtkDrawingArea fills 100% of itself. (and is
on the bottom of the widget stack -- this happens automatically if the
drawing area is the first widget to be added to the GtkFixed and it is
never removed.)

The gtk_scaffold object must expose a call to show/hide (link/delink?)
its scrollbars so that if the contained gui_window becomes a frameset
then it can hide the scrollbars belonging to the top level window.

It must be possible to add gui_window objects to other gui_window
objects rather than to a gtk_scaffold so that frames can be embedded
appropriately.

The size-allocate event for the drawing area must pass through to the
underlying browser_window as currently it does.