From 3245da27eeb982b43e15a902e3a7d42b488b0aa2 Mon Sep 17 00:00:00 2001 From: Christopher Aillon Date: Wed, 6 Sep 2006 07:22:56 +0000 Subject: - Fix for cursor position in editor widgets by tagoh and behdad (#198759) --- firefox-1.5-pango-cursor-position.patch | 52 +++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 firefox-1.5-pango-cursor-position.patch (limited to 'firefox-1.5-pango-cursor-position.patch') diff --git a/firefox-1.5-pango-cursor-position.patch b/firefox-1.5-pango-cursor-position.patch new file mode 100644 index 0000000..d287fd3 --- /dev/null +++ b/firefox-1.5-pango-cursor-position.patch @@ -0,0 +1,52 @@ +Index: mozilla/gfx/src/gtk/nsFontMetricsPango.cpp +=================================================================== +RCS file: /cvsroot/mozilla/gfx/src/gtk/nsFontMetricsPango.cpp,v +retrieving revision 1.24 +diff -d -u -p -6 -r1.24 nsFontMetricsPango.cpp +--- mozilla/gfx/src/gtk/nsFontMetricsPango.cpp 25 Aug 2006 01:02:34 -0000 1.24 ++++ mozilla/gfx/src/gtk/nsFontMetricsPango.cpp 6 Sep 2006 07:01:49 -0000 +@@ -948,13 +948,12 @@ nsFontMetricsPango::GetClusterInfo(const + PRInt32 + nsFontMetricsPango::GetPosition(const PRUnichar *aText, PRUint32 aLength, + nsPoint aPt) + { + int trailing = 0; + int inx = 0; +- gboolean found = FALSE; + const gchar *curChar; + PRInt32 retval = 0; + + float f = mDeviceContext->AppUnitsToDevUnits(); + + PangoLayout *layout = pango_layout_new(mPangoContext); +@@ -974,28 +973,18 @@ nsFontMetricsPango::GetPosition(const PR + } + + // Set up the pango layout + pango_layout_set_text(layout, text, strlen(text)); + FixupSpaceWidths(layout, text); + +- found = pango_layout_xy_to_index(layout, localX, localY, +- &inx, &trailing); ++ pango_layout_xy_to_index(layout, localX, localY, ++ &inx, &trailing); + + // Convert the index back to the utf-16 index + curChar = text; + +- // Jump to the end if it's not found. +- if (!found) { +- if (inx == 0) +- retval = 0; +- else if (trailing) +- retval = aLength; +- +- goto loser; +- } +- + for (PRUint32 curOffset=0; curOffset < aLength; + curOffset++, curChar = g_utf8_find_next_char(curChar, NULL)) { + + // Check for a match before checking for a surrogate pair + if (curChar - text == inx) { + retval = curOffset; -- cgit