fpaquet / gtksheet

A spreadsheet widget for Gtk+
http://fpaquet.github.io/gtksheet/
Other
27 stars 9 forks source link

gtk_sheet_button_attach can not attach a button. #12

Closed songqingshan closed 5 years ago

songqingshan commented 5 years ago

I have reported attaching button issue using gtk_sheet_attach function in the issue 1. gtk_sheet_attach can attach a button, but when revisiting the same page, the button disappears and sometimes testgtksheet crashes. when I use gtk_sheet_button_attach to attach a button in my test sheet, the button never shows and no warning or error message. When clicking the button cell, the message "GLib-CRITICAL **: 11:40:42.929: Source ID 7392 was not found when attempting to remove it". Callback function never works.

fpaquet commented 5 years ago

Which branch are you using?

fpaquet commented 5 years ago

I've now released V4.3.0 for Gtk3 (branch gtk3) https://github.com/fpaquet/gtksheet/releases/tag/V4.3.0

And published online docs V4 https://fpaquet.github.io/gtksheet/reference/index.html

This should fix the missing button issue.

fpaquet commented 5 years ago

The timer issue was fixed in commit 6620015 in branch gtk3_fixes Thank you for reporting.

fpaquet commented 5 years ago

example1 in testgtksheet.c(835) shows a working example with show_button callback.

songqingshan commented 5 years ago

Hello Fredy, Thank your fixing some issues in 4.2.0 and releasing 4.3.0. I try the 4.3.0 and attached is the screen output of testgtksheet.exe. issue 1 (testgtksheet.exe:2816): Gtk-CRITICAL **: 23:44:30.140: gtk_widget_destroy: assertion 'GTK_IS_WIDGET (widget)' failed. this issues exists in both 4.2.0 and 4.3.0. I know this issue in 4.2.0, but I have not reported it. issue 2

(testgtksheet.exe:2816): GLib-CRITICAL **: 23:44:37.279: Source ID 634 was not found when attempting to remove it

I believe that is caused by mapping as I mentioned before. It is highly caused by matrix button (top-left button or button "0"). In other words, mapping issue is partially resolved as I told.

issue 3

(testgtksheet.exe:2816): Gtk-CRITICAL **: 23:44:48.461: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkSpinButton This issue exists in both 4.2.0 and 4.3.0

I hope you can take time to look at them.

Song *


From: Fredy Paquet notifications@github.com Sent: March 10, 2019 6:00 AM To: fpaquet/gtksheet Cc: songqingshan; Author Subject: Re: [fpaquet/gtksheet] gtk_sheet_button_attach can not attach a button. (#12)

The timer issue was fixed in commit 6620015https://github.com/fpaquet/gtksheet/commit/66200150c894a6ee28d2b054116d3bb2aed09025 in branch gtk3_fixes Thank you for reporting.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/fpaquet/gtksheet/issues/12#issuecomment-471277562, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ApTBUzbfIRTXyPcPgnFOctUd6ZEr75YZks5vVOW6gaJpZM4ZeR-r.

$ ./testgtksheet

(testgtksheet.exe:2816): Gtk-CRITICAL **: 23:44:30.140: gtk_widget_destroy: assertion 'GTK_IS_WIDGET (widget)' failed

(testgtksheet.exe:2816): GLib-CRITICAL **: 23:44:37.279: Source ID 634 was not found when attempting to remove it

(testgtksheet.exe:2816): Gtk-WARNING **: 23:44:44.318: Can't set a parent on widget which has a parent

(testgtksheet.exe:2816): Gtk-WARNING **: 23:44:44.318: Can't set a parent on widget which has a parent

(testgtksheet.exe:2816): Gtk-WARNING **: 23:44:44.318: Can't set a parent on widget which has a parent

(testgtksheet.exe:2816): Gtk-WARNING **: 23:44:48.217: for_size smaller than min-size (17 < 32) while measuring gadget (node entry, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-CRITICAL **: 23:44:48.217: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkSpinButton

(testgtksheet.exe:2816): Gtk-WARNING **: 23:44:48.280: for_size smaller than min-size (13 < 32) while measuring gadget (node entry, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 23:44:48.281: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 23:44:48.281: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-CRITICAL **: 23:44:48.281: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkSpinButton

(testgtksheet.exe:2816): GLib-CRITICAL **: 23:44:48.330: Source ID 1868 was not found when attempting to remove it

(testgtksheet.exe:2816): Gtk-WARNING **: 23:44:48.338: for_size smaller than min-size (13 < 32) while measuring gadget (node entry, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 23:44:48.338: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 23:44:48.338: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-CRITICAL **: 23:44:48.339: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkSpinButton

(testgtksheet.exe:2816): Gtk-WARNING **: 23:44:48.461: for_size smaller than min-size (13 < 32) while measuring gadget (node entry, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 23:44:48.461: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 23:44:48.461: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-CRITICAL **: 23:44:48.461: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkSpinButton

(testgtksheet.exe:2816): Gtk-WARNING **: 23:44:48.577: for_size smaller than min-size (13 < 32) while measuring gadget (node entry, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 23:44:48.578: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 23:44:48.578: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-CRITICAL **: 23:44:48.578: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkSpinButton

(testgtksheet.exe:2816): Gtk-WARNING **: 23:44:49.900: for_size smaller than min-size (13 < 32) while measuring gadget (node entry, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 23:44:49.900: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 23:44:49.900: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-CRITICAL **: 23:44:49.900: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkSpinButton

(testgtksheet.exe:2816): Gtk-WARNING **: 23:44:50.050: for_size smaller than min-size (13 < 32) while measuring gadget (node entry, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 23:44:50.050: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 23:44:50.050: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-CRITICAL **: 23:44:50.050: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkSpinButton

(testgtksheet.exe:2816): Gtk-WARNING **: 23:44:50.192: for_size smaller than min-size (13 < 32) while measuring gadget (node entry, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 23:44:50.193: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 23:44:50.193: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-CRITICAL **: 23:44:50.193: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkSpinButton

(testgtksheet.exe:2816): Gtk-WARNING **: 23:52:28.510: for_size smaller than min-size (13 < 32) while measuring gadget (node entry, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 23:52:28.511: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 23:52:28.511: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-CRITICAL **: 23:52:28.511: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkSpinButton

(testgtksheet.exe:2816): Gtk-WARNING **: 23:52:28.654: for_size smaller than min-size (13 < 32) while measuring gadget (node entry, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 23:52:28.654: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 23:52:28.654: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-CRITICAL **: 23:52:28.654: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkSpinButton

(testgtksheet.exe:2816): Gtk-WARNING **: 23:52:28.818: for_size smaller than min-size (13 < 32) while measuring gadget (node entry, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 23:52:28.818: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 23:52:28.818: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-CRITICAL **: 23:52:28.818: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkSpinButton

(testgtksheet.exe:2816): Gtk-WARNING **: 23:52:30.468: for_size smaller than min-size (13 < 32) while measuring gadget (node entry, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 23:52:30.468: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 23:52:30.468: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-CRITICAL **: 23:52:30.469: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkSpinButton

(testgtksheet.exe:2816): Gtk-WARNING **: 23:52:30.633: for_size smaller than min-size (13 < 32) while measuring gadget (node entry, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 23:52:30.633: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 23:52:30.634: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-CRITICAL **: 23:52:30.634: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkSpinButton

(testgtksheet.exe:2816): Gtk-WARNING **: 23:52:30.780: for_size smaller than min-size (13 < 32) while measuring gadget (node entry, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 23:52:30.781: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 23:52:30.781: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-CRITICAL **: 23:52:30.781: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkSpinButton

(testgtksheet.exe:2816): Gtk-WARNING **: 00:02:09.550: for_size smaller than min-size (13 < 32) while measuring gadget (node entry, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 00:02:09.551: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 00:02:09.551: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-CRITICAL **: 00:02:09.551: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkSpinButton

(testgtksheet.exe:2816): Gtk-WARNING **: 00:02:09.689: for_size smaller than min-size (13 < 32) while measuring gadget (node entry, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 00:02:09.689: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 00:02:09.689: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-CRITICAL **: 00:02:09.689: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkSpinButton

(testgtksheet.exe:2816): Gtk-WARNING **: 00:02:09.851: for_size smaller than min-size (13 < 32) while measuring gadget (node entry, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 00:02:09.852: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 00:02:09.852: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-CRITICAL **: 00:02:09.852: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkSpinButton

(testgtksheet.exe:2816): Gtk-WARNING **: 00:02:12.480: for_size smaller than min-size (13 < 32) while measuring gadget (node entry, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 00:02:12.480: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 00:02:12.481: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-CRITICAL **: 00:02:12.481: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkSpinButton

(testgtksheet.exe:2816): Gtk-WARNING **: 00:02:12.607: for_size smaller than min-size (13 < 32) while measuring gadget (node entry, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 00:02:12.608: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-WARNING **: 00:02:12.608: for_size smaller than min-size (13 < 16) while measuring gadget (node button, owner GtkSpinButton)

(testgtksheet.exe:2816): Gtk-CRITICAL **: 00:02:12.608: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkSpinButton

(testgtksheet.exe:2816): GLib-CRITICAL **: 00:02:14.538: Source ID 1183 was not found when attempting to remove it

(testgtksheet.exe:2816): GLib-CRITICAL **: 00:02:14.538: Source ID 1868 was not found when attempting to remove it TRAVERSE: -1 -1 0 0 ACTIVATE CELL: 0 0 ACTIVATE CELL: 0 0 TRAVERSE: 0 0 0 1 DEACTIVATE CELL: 0 0 ACTIVATE CELL: 0 1 ACTIVATE CELL: 0 1 TRAVERSE: 0 1 0 2 DEACTIVATE CELL: 0 1 ACTIVATE CELL: 0 2 ACTIVATE CELL: 0 2 TRAVERSE: 0 2 1 5 DEACTIVATE CELL: 0 2 ACTIVATE CELL: 1 5 ACTIVATE CELL: 1 5 TRAVERSE: 1 5 3 7 DEACTIVATE CELL: 1 5 ACTIVATE CELL: 3 7 ACTIVATE CELL: 3 7 TRAVERSE: 3 7 -1 -1 DEACTIVATE CELL: 3 7 TRAVERSE: -1 -1 2 7 ACTIVATE CELL: 2 7 ACTIVATE CELL: 2 7 TRAVERSE: 2 7 14 3 DEACTIVATE CELL: 2 7 ACTIVATE CELL: 14 3 ACTIVATE CELL: 14 3 ACTIVATE CELL: 3 0 TRAVERSE: 3 0 3 0 ACTIVATE CELL: 3 0 TRAVERSE: 3 0 3 0 ACTIVATE CELL: 3 0 change_entry: -1 -1 -> 6 3 change_entry: GtkTextView change_entry: 6 3 -> 15 2 change_entry: GtkSpinButton

fpaquet commented 5 years ago

issue 1 - already fixed in gtk3_fixes branch issue 2 - already fixed in gtk3_fixes branch issue 3 - can be reproduced here

fpaquet commented 5 years ago

issue 3

Gtk-CRITICAL **: 23:44:48.461: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkSpinButton

This must be an upstream bug in GtkSpinButton. No matter what size we give to the spin button, this warning always appears on the next spin button activation. If we give it 150 pixels, it requires 181 pixels. If we give it 300 pixels, it requires 331 pixels. CSS doesn't seam to have any related properties.

Because this doesn't affect correct drawing of the spin button, i will close this issue.

fpaquet commented 5 years ago

I found out, that setting the width-chars property of the spin button entry to 0 helps. This is now done automatically (branch gtk3-fixes, not yet released)