net-im/coyim: Applies the correct fix for gotk3 from upstream.
As of Golang 1.16, the cgo tool will no longer try to translate C struct bitfields into Go struct fields, even if their size can be represented in Go. The order in which C bitfields appear in memory is implementation dependent, so in some cases the cgo tool produced results that were silently incorrect. In this case "accel_flags" is the bitwise field in question. A new declaration for GtkAccelKey structure that does not explicitly access to 'accel_flags' has been addressed in the patch. https://github.com/gotk3/gotk3/pull/730 Patch will be removed when vendor library will be updated.
This commit is contained in:
parent
11ff2d7e81
commit
3a9193de72
@ -1,22 +1,130 @@
|
||||
Remove the missing accel_flags field to prevent build failure.
|
||||
Solve GtkAccelKey issue with golang 1.16.
|
||||
|
||||
XXX: Investigate this further.
|
||||
https://github.com/gotk3/gotk3/pull/730
|
||||
|
||||
--- vendor/github.com/gotk3/gotk3/gtk/accel.go.orig 2021-04-07 12:07:51 UTC
|
||||
--- vendor/github.com/gotk3/gotk3/gtk/accel.go.orig 2019-03-22 10:58:51 UTC
|
||||
+++ vendor/github.com/gotk3/gotk3/gtk/accel.go
|
||||
@@ -244,7 +244,6 @@ func (v *AccelKey) native() *C.struct__GtkAccelKey {
|
||||
var val C.struct__GtkAccelKey
|
||||
val.accel_key = C.guint(v.key)
|
||||
val.accel_mods = C.GdkModifierType(v.mods)
|
||||
@@ -69,6 +69,20 @@ func AcceleratorSetDefaultModMask(mods gdk.ModifierTyp
|
||||
}
|
||||
|
||||
/*
|
||||
+ * GtkAccelLabel
|
||||
+ */
|
||||
+
|
||||
+// TODO:
|
||||
+// gtk_accel_label_new().
|
||||
+// gtk_accel_label_set_accel_closure().
|
||||
+// gtk_accel_label_get_accel_widget().
|
||||
+// gtk_accel_label_set_accel_widget().
|
||||
+// gtk_accel_label_get_accel_width().
|
||||
+// gtk_accel_label_set_accel(). since GTK 3.6
|
||||
+// gtk_accel_label_get_accel(). since GTK 3.12
|
||||
+// gtk_accel_label_refetch().
|
||||
+
|
||||
+/*
|
||||
* GtkAccelGroup
|
||||
*/
|
||||
|
||||
@@ -93,6 +107,10 @@ func marshalAccelGroup(p uintptr) (interface{}, error)
|
||||
}
|
||||
|
||||
func wrapAccelGroup(obj *glib.Object) *AccelGroup {
|
||||
+ if obj == nil {
|
||||
+ return nil
|
||||
+ }
|
||||
+
|
||||
return &AccelGroup{obj}
|
||||
}
|
||||
|
||||
@@ -191,6 +209,9 @@ func AccelGroupsFromObject(obj *glib.Object) *glib.SLi
|
||||
if res == nil {
|
||||
return nil
|
||||
}
|
||||
+
|
||||
+ // TODO: call DataWrapper on SList and wrap them to gtk.AccelGroup
|
||||
+
|
||||
return (*glib.SList)(unsafe.Pointer(res))
|
||||
}
|
||||
|
||||
@@ -219,6 +240,10 @@ func marshalAccelMap(p uintptr) (interface{}, error) {
|
||||
}
|
||||
|
||||
func wrapAccelMap(obj *glib.Object) *AccelMap {
|
||||
+ if obj == nil {
|
||||
+ return nil
|
||||
+ }
|
||||
+
|
||||
return &AccelMap{obj}
|
||||
}
|
||||
|
||||
@@ -230,43 +255,24 @@ func AccelMapAddEntry(path string, key uint, mods gdk.
|
||||
C.gtk_accel_map_add_entry((*C.gchar)(cstr), C.guint(key), C.GdkModifierType(mods))
|
||||
}
|
||||
|
||||
-type AccelKey struct {
|
||||
- key uint
|
||||
- mods gdk.ModifierType
|
||||
- flags uint16
|
||||
-}
|
||||
+type AccelKey C.GtkAccelKey
|
||||
|
||||
-func (v *AccelKey) native() *C.struct__GtkAccelKey {
|
||||
+func (v *AccelKey) native() *C.GtkAccelKey {
|
||||
if v == nil {
|
||||
return nil
|
||||
}
|
||||
-
|
||||
- var val C.struct__GtkAccelKey
|
||||
- val.accel_key = C.guint(v.key)
|
||||
- val.accel_mods = C.GdkModifierType(v.mods)
|
||||
- val.accel_flags = v.flags
|
||||
return &val
|
||||
- return &val
|
||||
+ return (*C.GtkAccelKey)(v)
|
||||
}
|
||||
|
||||
@@ -253,7 +252,6 @@ func wrapAccelKey(obj *C.struct__GtkAccelKey) *AccelKe
|
||||
|
||||
v.key = uint(obj.accel_key)
|
||||
v.mods = gdk.ModifierType(obj.accel_mods)
|
||||
-func wrapAccelKey(obj *C.struct__GtkAccelKey) *AccelKey {
|
||||
- var v AccelKey
|
||||
-
|
||||
- v.key = uint(obj.accel_key)
|
||||
- v.mods = gdk.ModifierType(obj.accel_mods)
|
||||
- v.flags = uint16(obj.accel_flags)
|
||||
-
|
||||
- return &v
|
||||
-}
|
||||
-
|
||||
// AccelMapLookupEntry is a wrapper around gtk_accel_map_lookup_entry().
|
||||
func AccelMapLookupEntry(path string) *AccelKey {
|
||||
cstr := C.CString(path)
|
||||
defer C.free(unsafe.Pointer(cstr))
|
||||
|
||||
return &v
|
||||
- var v *C.struct__GtkAccelKey
|
||||
+ var v = new(AccelKey)
|
||||
|
||||
- C.gtk_accel_map_lookup_entry((*C.gchar)(cstr), v)
|
||||
- return wrapAccelKey(v)
|
||||
+ C.gtk_accel_map_lookup_entry((*C.gchar)(cstr), v.native())
|
||||
+ return v
|
||||
}
|
||||
|
||||
// AccelMapChangeEntry is a wrapper around gtk_accel_map_change_entry().
|
||||
@@ -417,7 +423,7 @@ func (v *Window) AddAccelGroup(accelGroup *AccelGroup)
|
||||
C.gtk_window_add_accel_group(v.native(), accelGroup.native())
|
||||
}
|
||||
|
||||
-// RemoveAccelGroup() is a wrapper around gtk_window_add_accel_group().
|
||||
+// RemoveAccelGroup() is a wrapper around gtk_window_remove_accel_group().
|
||||
func (v *Window) RemoveAccelGroup(accelGroup *AccelGroup) {
|
||||
C.gtk_window_remove_accel_group(v.native(), accelGroup.native())
|
||||
}
|
||||
@@ -432,4 +438,10 @@ func (v *Window) RemoveAccelGroup(accelGroup *AccelGro
|
||||
// TODO: gtk_accel_map_foreach - can't be done without a function type
|
||||
|
||||
// TODO: gtk_accel_map_load_scanner
|
||||
-// TODO: gtk_widget_list_accel_closures
|
||||
+
|
||||
+/*
|
||||
+ * GtkWidget
|
||||
+ */
|
||||
+
|
||||
+// TODO:
|
||||
+// gtk_widget_list_accel_closures
|
||||
|
Loading…
Reference in New Issue
Block a user