[gnumeric] Fix cursor position inside a cell edited in a zoomed sheet. [#641709]
- From: Jean Bréfort <jbrefort src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] Fix cursor position inside a cell edited in a zoomed sheet. [#641709]
- Date: Mon, 7 Feb 2011 10:20:11 +0000 (UTC)
commit d0784545421633067f59fe4cf93fcabf69057a71
Author: Jean Brefort <jean brefort normalesup org>
Date: Mon Feb 7 11:18:16 2011 +0100
Fix cursor position inside a cell edited in a zoomed sheet. [#641709]
ChangeLog | 5 +++++
NEWS | 3 +++
src/item-edit.c | 15 +++++++++++----
3 files changed, 19 insertions(+), 4 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 0a69180..7520d09 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2011-02-07 Jean Brefort <jean brefort normalesup org>
+
+ * src/item-edit.c (item_edit_button_pressed), (item_edit_motion): fix
+ cursor position inside a cell edited in a zoomed sheet. [#641709]
+
2011-02-06 Jean Brefort <jean brefort normalesup org>
* libspreadsheet.pc.in: removed libglade-2.0 from requirements.
diff --git a/NEWS b/NEWS
index bd7a954..9d2e881 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,9 @@ Gnumeric 1.10.14
Andreas:
* Fix width of translated lists in various dialogs [#641626]
+Jean:
+ * Fix cursor position inside a cell edited in a zoomed sheet. [#641709]
+
Morten:
* Import wide sc files. [#641581]
diff --git a/src/item-edit.c b/src/item-edit.c
index 4d23c35..af58fe8 100644
--- a/src/item-edit.c
+++ b/src/item-edit.c
@@ -241,9 +241,13 @@ item_edit_button_pressed (GocItem *item, int button, double x, double y)
y = y - item->y0;
if (dir == PANGO_DIRECTION_RTL) {
pango_layout_get_pixel_extents (ie->layout, NULL, &pos);
- x -= item->x1 - item->x0 - pos.width
- - 2 * GNM_COL_MARGIN / goc_canvas_get_pixels_per_unit (item->canvas);
+ x -= item->x1 - item->x0 - (pos.width
+ + 2 * GNM_COL_MARGIN) / goc_canvas_get_pixels_per_unit (item->canvas);
}
+ /* the layout might be zoomed, we need to adjust x and y accordingly */
+ x *= goc_canvas_get_pixels_per_unit (item->canvas);
+ y *= goc_canvas_get_pixels_per_unit (item->canvas);
+
if (pango_layout_xy_to_index (ie->layout,
x * PANGO_SCALE, y * PANGO_SCALE,
&target_index, &trailing)) {
@@ -291,9 +295,12 @@ item_edit_motion (GocItem *item, double x, double y)
y = y - item->y0;
if (dir == PANGO_DIRECTION_RTL) {
pango_layout_get_pixel_extents (ie->layout, NULL, &pos);
- x -= item->x1 - item->x0 - pos.width
- - 2 * GNM_COL_MARGIN / goc_canvas_get_pixels_per_unit (item->canvas);
+ x -= item->x1 - item->x0 - (pos.width
+ + 2 * GNM_COL_MARGIN) / goc_canvas_get_pixels_per_unit (item->canvas);
}
+ /* the layout might be zoomed, we need to adjust x and y accordingly */
+ x *= goc_canvas_get_pixels_per_unit (item->canvas);
+ y *= goc_canvas_get_pixels_per_unit (item->canvas);
if (pango_layout_xy_to_index (ie->layout,
x * PANGO_SCALE, y * PANGO_SCALE,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]