2

我刚刚偶然发现了插入注释和撤消功能的一个微妙问题。重现步骤:

  1. 打开编辑器
  2. 在源缓冲区的某处插入注释
  3. 按 ctrl+z 撤消
  4. 插入另一条评论,评论插入正常,但标准输出中显示以下错误:

    GtkSourceView-CRITICAL **:modified_changed_handler:断言'action!= NULL'失败

  5. 插入另一个评论,这也有效

  6. 尝试通过按 ctrl+z 撤消,撤消不起作用,并且在 stdout 中显示以下错误:

    GtkSourceView-CRITICAL **: gtk_source_undo_manager_undo_impl: 断言 `undo_action != NULL' 失败

从这里开始撤消不起作用。

这是我的 insert_comment():

    ...
tbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(txtinput[current_tab]));
gtk_text_buffer_get_selection_bounds (tbuffer, &start, &end);

gtk_text_iter_set_line_offset (&start, 0);
gtk_text_buffer_insert (tbuffer, &start, "// \0", -1);
    ...

和我的撤消按键定义:

    case GDK_KEY_z:
        if (event -> state & GDK_CONTROL_MASK)
        {

            GtkSourceBuffer *sbuffer;

            sbuffer = GTK_SOURCE_BUFFER(gtk_text_view_get_buffer(GTK_TEXT_VIEW(txtinput[current_tab])));

            if (gtk_source_buffer_can_undo(sbuffer))
            {
                gtk_source_buffer_undo(sbuffer);
            }

            return TRUE;
        }

        break;

我看到另一个人也有同样的问题,但没有提出解决方案。有没有其他人有这个问题?

我尝试将“修改后的”信号连接注释掉作为故障排除步骤,但问题仍然存在。

关于我可能做错了什么的任何想法?谢谢。

4

0 回答 0