summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPietro Gagliardi <[email protected]>2014-08-22 10:52:51 -0400
committerPietro Gagliardi <[email protected]>2014-08-22 10:52:51 -0400
commit20a65d96df8cfb27ebd8af3f6c5f23c5503432c5 (patch)
tree3f4547a6b184f9aab59a774fea4109bc53a631e3
parent7ad1a9852e6c19b99eae880091d7eb89fde7fad3 (diff)
Wrapped GTK+ Areas in a GtkOverlay in preparation for adding OpenTextFieldAt().
-rw-r--r--redo/area_unix.go2
-rw-r--r--redo/control_unix.go27
-rw-r--r--redo/table_unix.go2
3 files changed, 25 insertions, 6 deletions
diff --git a/redo/area_unix.go b/redo/area_unix.go
index 60de5f0..7cee97b 100644
--- a/redo/area_unix.go
+++ b/redo/area_unix.go
@@ -50,7 +50,7 @@ func newArea(ab *areabase) Area {
areabase: ab,
_widget: 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),
}
for _, c := range areaCallbacks {
diff --git a/redo/control_unix.go b/redo/control_unix.go
index fad5c35..10193e8 100644
--- a/redo/control_unix.go
+++ b/redo/control_unix.go
@@ -69,14 +69,28 @@ type scroller struct {
scrollwidget *C.GtkWidget
scrollcontainer *C.GtkContainer
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)
+ if overlay {
+ o = C.gtk_overlay_new()
+ }
s := &scroller{
scrollwidget: scrollwidget,
scrollcontainer: (*C.GtkContainer)(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+)
if bordered {
@@ -87,15 +101,20 @@ func newScroller(widget *C.GtkWidget, native bool, bordered bool) *scroller {
} else {
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
}
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()
- C.gtk_widget_show_all(s.scrollwidget)
+ C.gtk_widget_show_all(s.addShowWhich)
}
func (s *scroller) commitResize(c *allocation, d *sizing) {
- dobasecommitResize(s.scrollwidget, c, d)
+ dobasecommitResize(s.addShowWhich, c, d)
}
diff --git a/redo/table_unix.go b/redo/table_unix.go
index 8fa18bc..3566c87 100644
--- a/redo/table_unix.go
+++ b/redo/table_unix.go
@@ -46,7 +46,7 @@ var (
func finishNewTable(b *tablebase, ty reflect.Type) Table {
widget := C.gtk_tree_view_new()
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,
_widget: widget,
treeview: (*C.GtkTreeView)(unsafe.Pointer(widget)),