首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GtkTextView选择焦点上的所有文本

GtkTextView选择焦点上的所有文本
EN

Stack Overflow用户
提问于 2014-12-16 03:56:19
回答 2查看 589关注 0票数 1

我正在尝试实现一个文本视图,当用户单击该视图时,所有文本都将被选中。但是,当我尝试以下操作时,单击文本视图时不会选中文本,尽管它是在拖动窗口后选择的。

考虑下面这个最小的例子:

代码语言:javascript
复制
#include <gtk/gtk.h>
gboolean cb(GtkWidget *tv, GdkEvent *event, gpointer user_data) {
    GtkTextBuffer *buf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(tv));
    GtkTextIter start, end;
    gtk_text_buffer_get_start_iter(buf, &start);
    gtk_text_buffer_get_end_iter(buf, &end);
    gtk_text_buffer_select_range(buf, &start, &end);
    return FALSE;
}

int main(int argc, char *argv[]) {
    gtk_init(&argc, &argv);
    GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    GtkWidget *box1 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
    gtk_container_add(GTK_CONTAINER(window), box1);

    GtkWidget *tv1 = gtk_text_view_new();
    GtkWidget *tv2 = gtk_text_view_new();
    gtk_box_pack_start(GTK_BOX(box1), tv1, TRUE, TRUE, 0);
    gtk_box_pack_start(GTK_BOX(box1), tv2, TRUE, TRUE, 0);

    GtkTextBuffer *buf1 = gtk_text_view_get_buffer(GTK_TEXT_VIEW(tv1));
    GtkTextBuffer *buf2 = gtk_text_view_get_buffer(GTK_TEXT_VIEW(tv2));
    gtk_text_buffer_set_text(buf1, "asdf", -1);
    gtk_text_buffer_set_text(buf2, "ghjkl", -1);

    g_signal_connect(tv2, "focus-in-event", G_CALLBACK(cb), NULL);

    gtk_widget_show(tv1);
    gtk_widget_show(tv2);
    gtk_widget_show(box1);
    gtk_widget_show(window);
    gtk_main();
    return 0;
}

我应该改变什么才能得到想要的结果?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-22 07:09:24

将回调函数连接到button-release-event

票数 1
EN

Stack Overflow用户

发布于 2014-12-21 18:24:17

我希望当您单击文本视图时,当文本视图已经具有输入焦点时,不会触发focus-in-event。尝试使用button-press-event代替。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27497265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档