static void
mate_icon_text_item_realize (MateCanvasItem *item)
{
    MateIconTextItem *iti = MATE_ICON_TEXT_ITEM (item);

    if (iti->_priv->entry) {
        realize_cursor_gc (iti);
    }

    MATE_CALL_PARENT (MATE_CANVAS_ITEM_CLASS, realize, (item));
}
Ejemplo n.º 2
0
static void
gnome_icon_text_item_realize (GnomeCanvasItem *item)
{
	GnomeIconTextItem *iti = GNOME_ICON_TEXT_ITEM (item);

	if (iti->_priv->entry) {
		realize_cursor_gc (iti);
	}

	GNOME_CALL_PARENT (GNOME_CANVAS_ITEM_CLASS, realize, (item));
}
/* Starts the editing state of an icon text item */
static void
iti_start_editing (MateIconTextItem *iti)
{
    MateIconTextItemPrivate *priv;

    priv = iti->_priv;

    if (iti->editing)
        return;

    /* We place an entry offscreen to handle events and selections.  */
    if (priv->entry_top == NULL) {
        priv->entry = gtk_entry_new ();
        g_signal_connect (priv->entry, "activate",
                          G_CALLBACK (iti_entry_activate), iti);


        if (GTK_WIDGET_REALIZED (GTK_WIDGET (MATE_CANVAS_ITEM (iti)->canvas))) {
            realize_cursor_gc (iti);
        }

        /* Make clipboard functions cause an update, since clipboard
         * functions will change the offscreen entry */
        g_signal_connect_after (priv->entry, "changed",
                                G_CALLBACK (iti_entry_text_changed_by_clipboard),
                                iti);
        priv->entry_top = gtk_window_new (GTK_WINDOW_POPUP);
        gtk_container_add (GTK_CONTAINER (priv->entry_top),
                           GTK_WIDGET (priv->entry));
        gtk_window_move (GTK_WINDOW (priv->entry_top), 20000, 20000);
        gtk_widget_show_all (priv->entry_top);
    }

    gtk_entry_set_text (GTK_ENTRY (priv->entry), iti->text);
    gtk_editable_select_region (GTK_EDITABLE (priv->entry), 0, -1);

    iti->editing = TRUE;
    priv->need_state_update = TRUE;

    send_focus_event (iti, TRUE);
    mate_canvas_item_request_update (MATE_CANVAS_ITEM (iti));

    g_signal_emit (iti, iti_signals[EDITING_STARTED], 0);
}