gtk绘图区不重绘内容

gtk drawing area does not redraw content

我在 Ubuntu 19.10 64 位系统

源文件:

https://drive.google.com/open?id=1I4ejOHNXqbAOkTbIyJR0lvldsAwiPPqI

问题:

我正在使用 gtk 和 glade with c 开发一个简单的绘图程序。现在我陷入了实施撤消行为。我有两个问题。有些情况下我按下撤消按钮。

1) 当我在 canvas 上画了一笔或一个点时,它的效果就像我所经历的那样完美。 Canvas 自行清除。

2) 当我在 canvas 上有两个笔划或两个点时,如果我单击一次撤消,canvas 不会重绘自己,除非我再次绘制;如果我点击两次,它就像第一种情况一样完美,canvas 清除。

3) 当我在 canvas 上有两个以上的笔画或两个点时,如果我单击两次撤消,程序将停止工作,等待我强制退出。

我是使用 glade、gtk3 和 cairo 库的初学者。几天来我一直在寻找这个问题。然而,与流行的框架和库相比,资源是稀缺的。此外,我无法匹配我需要的问题。感谢您的帮助。

EDIT 我忘了补充一下,停止问题发生在函数之后,on_undo_clicked 第二次退出(两次撤消点击)。

我解决了问题。

在函数中,addPoint我忘记了next结构指针的pre指针可能是悬空指针。它造成了问题。