static gboolean e_minicard_label_event (GnomeCanvasItem *item, GdkEvent *event) { EMinicardLabel *e_minicard_label; e_minicard_label = E_MINICARD_LABEL (item); switch (event->type) { case GDK_KEY_PRESS: if (event->key.keyval == GDK_KEY_Escape) { GnomeCanvasItem *parent; e_text_cancel_editing (E_TEXT (e_minicard_label->field)); parent = GNOME_CANVAS_ITEM (e_minicard_label)->parent; if (parent) e_canvas_item_grab_focus (parent, FALSE); } break; case GDK_FOCUS_CHANGE: { GdkEventFocus *focus_event = (GdkEventFocus *) event; e_minicard_label->has_focus = focus_event->in; set_colors (e_minicard_label); g_object_set (e_minicard_label->field, "handle_popup", e_minicard_label->has_focus, NULL); break; } case GDK_BUTTON_PRESS: case GDK_BUTTON_RELEASE: case GDK_MOTION_NOTIFY: case GDK_ENTER_NOTIFY: case GDK_LEAVE_NOTIFY: { gboolean return_val; g_signal_emit_by_name(e_minicard_label->field, "event", event, &return_val); return return_val; } default: break; } if (GNOME_CANVAS_ITEM_CLASS ( parent_class )->event) return (* GNOME_CANVAS_ITEM_CLASS ( parent_class )->event) (item, event); else return 0; }
static void e_minicard_label_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { EMinicardLabel *e_minicard_label; GnomeCanvasItem *item; e_minicard_label = E_MINICARD_LABEL (object); item = GNOME_CANVAS_ITEM (object); switch (property_id) { case PROP_WIDTH: e_minicard_label->width = g_value_get_double (value); e_minicard_label_resize_children (e_minicard_label); e_canvas_item_request_reflow (item); break; case PROP_HAS_FOCUS: if (e_minicard_label->field && (g_value_get_boolean (value) != E_FOCUS_NONE)) e_canvas_item_grab_focus (e_minicard_label->field, FALSE); break; case PROP_FIELD: gnome_canvas_item_set( e_minicard_label->field, "text", g_value_get_string (value), NULL ); break; case PROP_FIELDNAME: gnome_canvas_item_set( e_minicard_label->fieldname, "text", g_value_get_string (value), NULL ); break; case PROP_TEXT_MODEL: gnome_canvas_item_set( e_minicard_label->field, "model", g_value_get_object (value), NULL); break; case PROP_MAX_FIELD_NAME_WIDTH: e_minicard_label->max_field_name_length = g_value_get_double (value); break; case PROP_EDITABLE: e_minicard_label->editable = g_value_get_boolean (value); g_object_set (e_minicard_label->field, "editable", FALSE /* e_minicard_label->editable */, NULL); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } }
/* Handles the events on the ETableClickToAdd, particularly * it creates the ETableItem and passes in some events. */ static gint etcta_event (GnomeCanvasItem *item, GdkEvent *e) { ETableClickToAdd *etcta = E_TABLE_CLICK_TO_ADD (item); switch (e->type) { case GDK_FOCUS_CHANGE: if (!e->focus_change.in) return TRUE; /* coverity[fallthrough] */ case GDK_BUTTON_PRESS: if (etcta->text) { g_object_run_dispose (G_OBJECT (etcta->text)); etcta->text = NULL; } if (etcta->rect) { g_object_run_dispose (G_OBJECT (etcta->rect)); etcta->rect = NULL; } if (!etcta->row) { ETableModel *one; one = e_table_one_new (etcta->model); etcta_add_one (etcta, one); g_object_unref (one); e_selection_model_clear (E_SELECTION_MODEL (etcta->selection)); etcta->row = gnome_canvas_item_new ( GNOME_CANVAS_GROUP (item), e_table_item_get_type (), "ETableHeader", etcta->eth, "ETableModel", etcta->one, "minimum_width", etcta->width, "horizontal_draw_grid", TRUE, "vertical_draw_grid", TRUE, "selection_model", etcta->selection, "cursor_mode", E_CURSOR_SPREADSHEET, NULL); g_signal_connect ( etcta->row, "key_press", G_CALLBACK (item_key_press), etcta); e_signal_connect_notify ( etcta->row, "notify::is-editing", G_CALLBACK (table_click_to_add_row_is_editing_changed_cb), etcta); e_canvas_item_grab_focus (GNOME_CANVAS_ITEM (etcta->row), TRUE); set_initial_selection (etcta); g_object_notify (G_OBJECT (etcta), "is-editing"); } break; case GDK_KEY_PRESS: switch (e->key.keyval) { case GDK_KEY_Tab: case GDK_KEY_KP_Tab: case GDK_KEY_ISO_Left_Tab: finish_editing (etcta); break; default: return FALSE; case GDK_KEY_Escape: if (etcta->row) { e_table_item_leave_edit (E_TABLE_ITEM (etcta->row)); etcta_drop_one (etcta); g_object_run_dispose (G_OBJECT (etcta->row)); etcta->row = NULL; create_rect_and_text (etcta); e_canvas_item_move_absolute (etcta->text, 3, 3); } break; } break; default: return FALSE; } return TRUE; }