예제 #1
0
 bool Element::is_last_two_rows() const {
   if(!is_empty()) {
     Cell cell = convert_layout_index_to_cell(get_layout_index());
     return (cell.get_y() >= 5);
   } else {
     return false;
   }
 }
예제 #2
0
 bool Element::is_first_row() const {
   if(!is_empty()) {
     Cell cell = convert_layout_index_to_cell(get_layout_index());
     return (cell.get_y() == 1);
   } else {
     return false;
   }
 }
static gboolean
mate_icon_text_item_event (MateCanvasItem *item, GdkEvent *event)
{
    MateIconTextItem *iti;
    MateIconTextItemPrivate *priv;
    int idx;
    double cx, cy;

    iti = MATE_ICON_TEXT_ITEM (item);
    priv = iti->_priv;

    switch (event->type) {
    case GDK_KEY_PRESS:
        if (!iti->editing) {
            break;
        }

        switch(event->key.keyval) {

        /* Pass these events back to parent */
        case GDK_Escape:
        case GDK_Return:
        case GDK_KP_Enter:
            return FALSE;

        /* Handle up and down arrow keys.  GdkEntry does not know
         * how to handle multi line items */
        case GDK_Up:
        case GDK_Down:
            iti_handle_arrow_key_event(iti, event);
            break;

        default:
            /* Check for control key operations */
            if (event->key.state & GDK_CONTROL_MASK) {
                return FALSE;
            }

            /* Handle any events that reach us */
            gtk_widget_event (GTK_WIDGET (priv->entry), event);
            break;
        }

        /* Update text item to reflect changes */
        update_pango_layout (iti);
        priv->need_text_update = TRUE;
        mate_canvas_item_request_update (item);
        return TRUE;

    case GDK_BUTTON_PRESS:
        if (!iti->editing) {
            break;
        }

        if (event->button.button == 1) {
            mate_canvas_w2c_d (item->canvas, event->button.x, event->button.y, &cx, &cy);
            idx = get_layout_index (iti,
                                    (cx - item->x1) + MARGIN_X,
                                    (cy - item->y1) + MARGIN_Y);
            iti_start_selecting (iti, idx, event->button.time);
        }
        return TRUE;
    case GDK_MOTION_NOTIFY:
        if (!priv->selecting)
            break;

        gtk_widget_event (GTK_WIDGET (priv->entry), event);
        mate_canvas_w2c_d (item->canvas, event->button.x, event->button.y, &cx, &cy);
        idx = get_layout_index (iti,
                                floor ((cx - (item->x1 + MARGIN_X)) + .5),
                                floor ((cy - (item->y1 + MARGIN_Y)) + .5));

        iti_selection_motion (iti, idx);
        return TRUE;

    case GDK_BUTTON_RELEASE:
        if (priv->selecting && event->button.button == 1)
            iti_stop_selecting (iti, event->button.time);
        else
            break;
        return TRUE;
    default:
        break;
    }

    return FALSE;
}