Finished the Area.Repaint() test and fixed found bugs. There's some weird issue left in GTK+ Areas...
This commit is contained in:
parent
4e2315e757
commit
8feaa1c439
|
@ -75,7 +75,8 @@ func (a *area) Repaint(r image.Rectangle) {
|
||||||
if r.Empty() {
|
if r.Empty() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
C.gtk_widget_queue_draw_area(a._widget, C.gint(r.Min.X), C.gint(r.Max.Y), C.gint(r.Dx()), C.gint(r.Dy()))
|
println(a._widget, C.gint(r.Min.X), C.gint(r.Min.Y), C.gint(r.Dx()), C.gint(r.Dy()))
|
||||||
|
C.gtk_widget_queue_draw_area(a._widget, C.gint(r.Min.X), C.gint(r.Min.Y), C.gint(r.Dx()), C.gint(r.Dy()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *area) RepaintAll() {
|
func (a *area) RepaintAll() {
|
||||||
|
|
|
@ -17,9 +17,7 @@ Tab
|
||||||
// After Delete(), the effect of accessing the Control of the deleted tab or any of its children is undefned. [TODO reword?]
|
// After Delete(), the effect of accessing the Control of the deleted tab or any of its children is undefned. [TODO reword?]
|
||||||
investigate close buttons (especially for LikeTab)
|
investigate close buttons (especially for LikeTab)
|
||||||
Area
|
Area
|
||||||
Repaint(rect image.Rectangle)
|
|
||||||
keyboard scrolling
|
keyboard scrolling
|
||||||
GTK+ port: our_area_focus_callback() has something to do with it
|
|
||||||
OpenTextFieldAt() and OpenTextAreaAt() to allow editing of text from within Areas
|
OpenTextFieldAt() and OpenTextAreaAt() to allow editing of text from within Areas
|
||||||
Tree
|
Tree
|
||||||
Mac OS X: make sure newScrollView() has the correct parameters for Table and Tree (and that Area has the appropriate ones from both + its own no border)
|
Mac OS X: make sure newScrollView() has the correct parameters for Table and Tree (and that Area has the appropriate ones from both + its own no border)
|
||||||
|
|
|
@ -4,6 +4,9 @@ package ui
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"image"
|
"image"
|
||||||
|
"image/color"
|
||||||
|
"image/draw"
|
||||||
|
"strconv"
|
||||||
)
|
)
|
||||||
|
|
||||||
type repainter struct {
|
type repainter struct {
|
||||||
|
@ -16,6 +19,11 @@ type repainter struct {
|
||||||
repaint Button
|
repaint Button
|
||||||
all Button
|
all Button
|
||||||
stack Stack
|
stack Stack
|
||||||
|
|
||||||
|
xv int
|
||||||
|
yv int
|
||||||
|
wv int
|
||||||
|
hv int
|
||||||
}
|
}
|
||||||
|
|
||||||
func newRepainter(times int) *repainter {
|
func newRepainter(times int) *repainter {
|
||||||
|
@ -23,11 +31,17 @@ func newRepainter(times int) *repainter {
|
||||||
r.img = tileImage(times)
|
r.img = tileImage(times)
|
||||||
r.area = NewArea(r.img.Rect.Dx(), r.img.Rect.Dy(), r)
|
r.area = NewArea(r.img.Rect.Dx(), r.img.Rect.Dy(), r)
|
||||||
r.x = NewTextField()
|
r.x = NewTextField()
|
||||||
|
r.x.OnChanged(r.setx)
|
||||||
r.y = NewTextField()
|
r.y = NewTextField()
|
||||||
|
r.y.OnChanged(r.sety)
|
||||||
r.width = NewTextField()
|
r.width = NewTextField()
|
||||||
|
r.width.OnChanged(r.setwidth)
|
||||||
r.height = NewTextField()
|
r.height = NewTextField()
|
||||||
|
r.height.OnChanged(r.setheight)
|
||||||
r.repaint = NewButton("Rect")
|
r.repaint = NewButton("Rect")
|
||||||
|
r.repaint.OnClicked(r.dorect)
|
||||||
r.all = NewButton("All")
|
r.all = NewButton("All")
|
||||||
|
r.all.OnClicked(r.doall)
|
||||||
r.stack = NewHorizontalStack(r.x, r.y, r.width, r.height, r.repaint, r.all)
|
r.stack = NewHorizontalStack(r.x, r.y, r.width, r.height, r.repaint, r.all)
|
||||||
r.stack.SetStretchy(0)
|
r.stack.SetStretchy(0)
|
||||||
r.stack.SetStretchy(1)
|
r.stack.SetStretchy(1)
|
||||||
|
@ -44,3 +58,58 @@ func (r *repainter) Paint(rect image.Rectangle) *image.RGBA {
|
||||||
|
|
||||||
func (r *repainter) Mouse(me MouseEvent) {}
|
func (r *repainter) Mouse(me MouseEvent) {}
|
||||||
func (r *repainter) Key(ke KeyEvent) bool { return false }
|
func (r *repainter) Key(ke KeyEvent) bool { return false }
|
||||||
|
|
||||||
|
func (r *repainter) setx() {
|
||||||
|
i, err := strconv.Atoi(r.x.Text())
|
||||||
|
if err != nil {
|
||||||
|
r.x.Invalid(err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
r.x.Invalid("")
|
||||||
|
r.xv = i
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *repainter) sety() {
|
||||||
|
i, err := strconv.Atoi(r.y.Text())
|
||||||
|
if err != nil {
|
||||||
|
r.y.Invalid(err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
r.y.Invalid("")
|
||||||
|
r.yv = i
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *repainter) setwidth() {
|
||||||
|
i, err := strconv.Atoi(r.width.Text())
|
||||||
|
if err != nil {
|
||||||
|
r.width.Invalid(err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
r.width.Invalid("")
|
||||||
|
r.wv = i
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *repainter) setheight() {
|
||||||
|
i, err := strconv.Atoi(r.height.Text())
|
||||||
|
if err != nil {
|
||||||
|
r.height.Invalid(err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
r.height.Invalid("")
|
||||||
|
r.hv = i
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *repainter) alter(rect image.Rectangle, c color.Color) {
|
||||||
|
draw.Draw(r.img, rect, &image.Uniform{c}, image.ZP, draw.Over)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *repainter) dorect() {
|
||||||
|
rect := image.Rect(r.xv, r.yv, r.xv + r.wv, r.yv + r.hv)
|
||||||
|
r.alter(rect, color.RGBA{255, 0, 255, 128})
|
||||||
|
r.area.Repaint(rect)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *repainter) doall() {
|
||||||
|
r.alter(r.img.Rect, color.RGBA{255, 255, 0, 128})
|
||||||
|
r.area.RepaintAll()
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue