On Thu, May 08, 2014 at 02:55:50PM +0300, Ander Conselvan de Oliveira wrote:
The calculation off the vertical offset between the widget coordinates
and where the text was rendered was wrong. It was using the constant for
horizontal offset for that too.
---
clients/editor.c | 33 +++--
1 file changed, 23 insertions(+), 10 deletions(-)
That fixes it here, thanks. I added
Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=78411
to the commit message.
Kristian
diff --git a/clients/editor.c b/clients/editor.c
index 3b00833..f3f6141 100644
--- a/clients/editor.c
+++ b/clients/editor.c
@@ -1011,7 +1011,17 @@ text_entry_draw_cursor(struct text_entry *entry,
cairo_t *cr)
cairo_stroke(cr);
}
-static const int text_offset_left = 10;
+static int
+text_offset_left(struct rectangle *allocation)
+{
+ return 10;
+}
+
+static int
+text_offset_top(struct rectangle *allocation)
+{
+ return allocation-height / 2;
+}
static void
text_entry_redraw_handler(struct widget *widget, void *data)
@@ -1048,7 +1058,9 @@ text_entry_redraw_handler(struct widget *widget, void
*data)
cairo_set_source_rgba(cr, 0, 0, 0, 1);
- cairo_translate(cr, text_offset_left, allocation.height / 2);
+ cairo_translate(cr,
+ text_offset_left(allocation),
+ text_offset_top(allocation));
if (!entry-layout)
entry-layout = pango_cairo_create_layout(cr);
@@ -1075,6 +1087,7 @@ text_entry_motion_handler(struct widget *widget,
{
struct text_entry *entry = data;
struct rectangle allocation;
+ int tx, ty;
if (!entry-button_pressed) {
return CURSOR_IBEAM;
@@ -1082,10 +1095,10 @@ text_entry_motion_handler(struct widget *widget,
widget_get_allocation(entry-widget, allocation);
- text_entry_set_cursor_position(entry,
-x - allocation.x - text_offset_left,
-y - allocation.y - text_offset_left,
-false);
+ tx = x - allocation.x - text_offset_left(allocation);
+ ty = y - allocation.y - text_offset_top(allocation);
+
+ text_entry_set_cursor_position(entry, tx, ty, false);
return CURSOR_IBEAM;
}
@@ -1105,8 +1118,8 @@ text_entry_button_handler(struct widget *widget,
widget_get_allocation(entry-widget, allocation);
input_get_position(input, x, y);
- x -= allocation.x + text_offset_left;
- y -= allocation.y + text_offset_left;
+ x -= allocation.x + text_offset_left(allocation);
+ y -= allocation.y + text_offset_top(allocation);
editor = window_get_user_data(entry-window);
@@ -1149,8 +1162,8 @@ text_entry_touch_handler(struct widget *widget, struct
input *input,
widget_get_allocation(entry-widget, allocation);
- x = tx - (allocation.x + text_offset_left);
- y = ty - (allocation.y + text_offset_left);
+ x = tx - (allocation.x + text_offset_left(allocation));
+ y = ty - (allocation.y + text_offset_top(allocation));
editor = window_get_user_data(entry-window);
text_entry_activate(entry, seat);
--
1.8.3.2
___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel
___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel