entry auto-scrolls now so the cursor is always visible

SVN revision: 4335
This commit is contained in:
Carsten Haitzler 2001-03-06 19:57:46 +00:00
parent 35cd461c8c
commit 9deae6546b
1 changed files with 12 additions and 5 deletions

View File

@ -225,7 +225,6 @@ e_entry_configure(E_Entry *entry)
evas_resize(entry->evas, entry->clip_box, entry->w, entry->h); evas_resize(entry->evas, entry->clip_box, entry->w, entry->h);
evas_move(entry->evas, entry->event_box, entry->x, entry->y); evas_move(entry->evas, entry->event_box, entry->x, entry->y);
evas_resize(entry->evas, entry->event_box, entry->w, entry->h); evas_resize(entry->evas, entry->event_box, entry->w, entry->h);
evas_move(entry->evas, entry->text, entry->x, entry->y);
if ((entry->buffer) && (entry->buffer[0] != 0) && (entry->focused)) if ((entry->buffer) && (entry->buffer[0] != 0) && (entry->focused))
{ {
int tx, ty, tw, th; int tx, ty, tw, th;
@ -241,16 +240,23 @@ e_entry_configure(E_Entry *entry)
tx += tw; tx += tw;
tw = entry->end_width; tw = entry->end_width;
} }
evas_move(entry->evas, entry->cursor, entry->x + tx, entry->y + ty); if (tx + tw + entry->scroll_pos > entry->w)
entry->scroll_pos = entry->w - tx - tw;
else if (tx + entry->scroll_pos < 0)
entry->scroll_pos = -tx;
evas_move(entry->evas, entry->cursor, entry->x + tx + entry->scroll_pos, entry->y + ty);
evas_resize(entry->evas, entry->cursor, tw, th); evas_resize(entry->evas, entry->cursor, tw, th);
evas_show(entry->evas, entry->cursor); evas_show(entry->evas, entry->cursor);
} }
else if (entry->focused) else if (entry->focused)
{ {
int th; int tx, tw, th;
entry->scroll_pos = 0;
tw = 4;
tx = 0;
th = evas_get_text_height(entry->evas, entry->text); th = evas_get_text_height(entry->evas, entry->text);
evas_move(entry->evas, entry->cursor, entry->x, entry->y); evas_move(entry->evas, entry->cursor, entry->x + tx + entry->scroll_pos, entry->y);
evas_resize(entry->evas, entry->cursor, entry->end_width, th); evas_resize(entry->evas, entry->cursor, entry->end_width, th);
evas_show(entry->evas, entry->cursor); evas_show(entry->evas, entry->cursor);
} }
@ -258,6 +264,7 @@ e_entry_configure(E_Entry *entry)
{ {
evas_hide(entry->evas, entry->cursor); evas_hide(entry->evas, entry->cursor);
} }
evas_move(entry->evas, entry->text, entry->x + entry->scroll_pos, entry->y);
if (entry->select.start >= 0) if (entry->select.start >= 0)
{ {
int x1, y1, x2, tw, th; int x1, y1, x2, tw, th;
@ -270,7 +277,7 @@ e_entry_configure(E_Entry *entry)
evas_text_at(entry->evas, entry->text, entry->select.start + entry->select.length - 2, &x2, NULL, &tw, &th); evas_text_at(entry->evas, entry->text, entry->select.start + entry->select.length - 2, &x2, NULL, &tw, &th);
tw += entry->end_width; tw += entry->end_width;
} }
evas_move(entry->evas, entry->selection, entry->x + x1, entry->y + y1); evas_move(entry->evas, entry->selection, entry->x + x1 + entry->scroll_pos, entry->y + y1);
evas_resize(entry->evas, entry->selection, x2 + tw - x1, th); evas_resize(entry->evas, entry->selection, x2 + tw - x1, th);
evas_show(entry->evas, entry->selection); evas_show(entry->evas, entry->selection);
} }