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:
Santhosh Raju 2021-04-08 00:31:25 +05:30
parent 11ff2d7e81
commit 3a9193de72

View File

@ -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