在gtksourceview中插入注释/撤消失败

时间:2012-12-21 07:59:30

标签: gtk gtksourceview

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

  1. 开放式编辑
  2. 在sourcebuffer中的某处插入评论
  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'失败

  7. 从这里撤消不起作用。

    这是我的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;
    

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

    我尝试将“已修改更改”的信号连接作为故障排除步骤进行评论,但问题仍然存在。

    关于我可能做错的任何想法?感谢。

0 个答案:

没有答案