Wrapped GTK+ Areas in a GtkOverlay in preparation for adding OpenTextFieldAt().
This commit is contained in:
parent
7ad1a9852e
commit
20a65d96df
|
@ -50,7 +50,7 @@ func newArea(ab *areabase) Area {
|
||||||
areabase: ab,
|
areabase: ab,
|
||||||
_widget: widget,
|
_widget: widget,
|
||||||
drawingarea: (*C.GtkDrawingArea)(unsafe.Pointer(widget)),
|
drawingarea: (*C.GtkDrawingArea)(unsafe.Pointer(widget)),
|
||||||
scroller: newScroller(widget, false, false), // not natively scrollable, no border
|
scroller: newScroller(widget, false, false, true), // not natively scrollable; no border; have an overlay for OpenTextFieldAt()
|
||||||
clickCounter: new(clickCounter),
|
clickCounter: new(clickCounter),
|
||||||
}
|
}
|
||||||
for _, c := range areaCallbacks {
|
for _, c := range areaCallbacks {
|
||||||
|
|
|
@ -69,14 +69,28 @@ type scroller struct {
|
||||||
scrollwidget *C.GtkWidget
|
scrollwidget *C.GtkWidget
|
||||||
scrollcontainer *C.GtkContainer
|
scrollcontainer *C.GtkContainer
|
||||||
scrollwindow *C.GtkScrolledWindow
|
scrollwindow *C.GtkScrolledWindow
|
||||||
|
|
||||||
|
overlaywidget *C.GtkWidget
|
||||||
|
overlaycontainer *C.GtkContainer
|
||||||
|
overlay *C.GtkOverlay
|
||||||
|
|
||||||
|
addShowWhich *C.GtkWidget
|
||||||
}
|
}
|
||||||
|
|
||||||
func newScroller(widget *C.GtkWidget, native bool, bordered bool) *scroller {
|
func newScroller(widget *C.GtkWidget, native bool, bordered bool, overlay bool) *scroller {
|
||||||
|
var o *C.GtkWidget
|
||||||
|
|
||||||
scrollwidget := C.gtk_scrolled_window_new(nil, nil)
|
scrollwidget := C.gtk_scrolled_window_new(nil, nil)
|
||||||
|
if overlay {
|
||||||
|
o = C.gtk_overlay_new()
|
||||||
|
}
|
||||||
s := &scroller{
|
s := &scroller{
|
||||||
scrollwidget: scrollwidget,
|
scrollwidget: scrollwidget,
|
||||||
scrollcontainer: (*C.GtkContainer)(unsafe.Pointer(scrollwidget)),
|
scrollcontainer: (*C.GtkContainer)(unsafe.Pointer(scrollwidget)),
|
||||||
scrollwindow: (*C.GtkScrolledWindow)(unsafe.Pointer(scrollwidget)),
|
scrollwindow: (*C.GtkScrolledWindow)(unsafe.Pointer(scrollwidget)),
|
||||||
|
overlaywidget: o,
|
||||||
|
overlaycontainer: (*C.GtkContainer)(unsafe.Pointer(o)),
|
||||||
|
overlay: (*C.GtkOverlay)(unsafe.Pointer(o)),
|
||||||
}
|
}
|
||||||
// give the scrolled window a border (thanks to jlindgren in irc.gimp.net/#gtk+)
|
// give the scrolled window a border (thanks to jlindgren in irc.gimp.net/#gtk+)
|
||||||
if bordered {
|
if bordered {
|
||||||
|
@ -87,15 +101,20 @@ func newScroller(widget *C.GtkWidget, native bool, bordered bool) *scroller {
|
||||||
} else {
|
} else {
|
||||||
C.gtk_scrolled_window_add_with_viewport(s.scrollwindow, widget)
|
C.gtk_scrolled_window_add_with_viewport(s.scrollwindow, widget)
|
||||||
}
|
}
|
||||||
|
s.addShowWhich = s.scrollwidget
|
||||||
|
if overlay {
|
||||||
|
C.gtk_container_add(s.overlaycontainer, s.scrollwidget)
|
||||||
|
s.addShowWhich = s.overlaywidget
|
||||||
|
}
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *scroller) setParent(p *controlParent) {
|
func (s *scroller) setParent(p *controlParent) {
|
||||||
C.gtk_container_add(p.c, s.scrollwidget)
|
C.gtk_container_add(p.c, s.addShowWhich)
|
||||||
// see basesetParent() above for why we call gtk_widget_show_all()
|
// see basesetParent() above for why we call gtk_widget_show_all()
|
||||||
C.gtk_widget_show_all(s.scrollwidget)
|
C.gtk_widget_show_all(s.addShowWhich)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *scroller) commitResize(c *allocation, d *sizing) {
|
func (s *scroller) commitResize(c *allocation, d *sizing) {
|
||||||
dobasecommitResize(s.scrollwidget, c, d)
|
dobasecommitResize(s.addShowWhich, c, d)
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@ var (
|
||||||
func finishNewTable(b *tablebase, ty reflect.Type) Table {
|
func finishNewTable(b *tablebase, ty reflect.Type) Table {
|
||||||
widget := C.gtk_tree_view_new()
|
widget := C.gtk_tree_view_new()
|
||||||
t := &table{
|
t := &table{
|
||||||
scroller: newScroller(widget, true, true), // natively scrollable; has a border
|
scroller: newScroller(widget, true, true, false), // natively scrollable; has a border; no overlay
|
||||||
tablebase: b,
|
tablebase: b,
|
||||||
_widget: widget,
|
_widget: widget,
|
||||||
treeview: (*C.GtkTreeView)(unsafe.Pointer(widget)),
|
treeview: (*C.GtkTreeView)(unsafe.Pointer(widget)),
|
||||||
|
|
Loading…
Reference in New Issue