代码之家  ›  专栏  ›  技术社区  ›  chollida

从GTK消息对话框复制文本

  •  0
  • chollida  · 技术社区  · 14 年前

    在windows错误对话框中,我可以使用CTRL-C来复制窗口文本。

    有没有办法允许GTK MessageDialog类处理copy命令?

    2 回复  |  直到 14 年前
        1
  •  0
  •   chollida    14 年前

    我最后做的是在对话框中添加一个消息处理程序来捕获Keyboard up命令。

    当它被触发时,我检查了CTRL-C组合键并将文本放到剪贴板上。

        2
  •  0
  •   Fredy Paquet    6 年前

    在gtk\u message\u dialog\u new()之后,通过对话框调用\u set\u lables\u selectable()

    static void _set_label_selectable(gpointer data, gpointer user_data)
    {
        GtkWidget *widget = GTK_WIDGET(data);
    
        if (GTK_IS_LABEL(widget))
        {
            gtk_label_set_selectable(GTK_LABEL(widget), TRUE);
        }
    }
    
    static void _set_lables_selectable(GtkWidget *dialog)
    {
        GtkWidget *area = gtk_message_dialog_get_message_area(
            GTK_MESSAGE_DIALOG(dialog));
        GtkContainer *box = (GtkContainer *) area;
    
        GList *children = gtk_container_get_children(box);
        g_list_foreach(children, _set_label_selectable, NULL);
        g_list_free(children);
    }
    

    GtkWidget *dialog =  gtk_message_dialog_new(opgU_window,
    GTK_DIALOG_DESTROY_WITH_PARENT,
    GTK_MESSAGE_QUESTION,
    GTK_BUTTONS_YES_NO,
    "%s", mbuf);
    
    _set_lables_selectable(dialog);