Bug 530575 – GtkEntry with invisible chars has a confused cursor in
2008-10-02 Matthias Clasen <mclasen@redhat.com> Bug 530575 – GtkEntry with invisible chars has a confused cursor in overwrite mode * gtk/gtkentry.c (gtk_entry_draw_cursor): Use the visible text in the layout when positioning the cursor, not the actual text content of the entry. This makes a different when using overwrite mode in an invisible entry. Problem noticed by Jonathan Blandford * gtk/gtktextutil.c: Fix a typo in a comment svn path=/trunk/; revision=21580
This commit is contained in:

committed by
Matthias Clasen

parent
ae2bf7863c
commit
3a4fea3307
15
ChangeLog
15
ChangeLog
@ -1,3 +1,16 @@
|
|||||||
|
2008-10-02 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
|
Bug 530575 – GtkEntry with invisible chars has a confused cursor in
|
||||||
|
overwrite mode
|
||||||
|
|
||||||
|
* gtk/gtkentry.c (gtk_entry_draw_cursor): Use the visible text
|
||||||
|
in the layout when positioning the cursor, not the actual text
|
||||||
|
content of the entry. This makes a different when using overwrite
|
||||||
|
mode in an invisible entry.
|
||||||
|
Problem noticed by Jonathan Blandford
|
||||||
|
|
||||||
|
* gtk/gtktextutil.c: Fix a typo in a comment
|
||||||
|
|
||||||
2008-10-02 Christian Persch
|
2008-10-02 Christian Persch
|
||||||
|
|
||||||
Bug 554704 – gtkfilesystemmodel does too much work
|
Bug 554704 – gtkfilesystemmodel does too much work
|
||||||
@ -215,7 +228,7 @@
|
|||||||
Bug 552959 – GtkTrayIcon: _NET_SYSTEM_TRAY_VISUAL and real
|
Bug 552959 – GtkTrayIcon: _NET_SYSTEM_TRAY_VISUAL and real
|
||||||
transparency
|
transparency
|
||||||
|
|
||||||
* gtk/gtktrayicon-x11.c: Add support for the _BET_SYSTEM_TRAY_VISUAL
|
* gtk/gtktrayicon-x11.c: Add support for the _NET_SYSTEM_TRAY_VISUAL
|
||||||
property described in
|
property described in
|
||||||
http://lists.freedesktop.org/archives/xdg/2008-September/009919.html
|
http://lists.freedesktop.org/archives/xdg/2008-September/009919.html
|
||||||
If _NET_SYSTEM_TRAY_VISUAL is a visual with an alpha channel, the
|
If _NET_SYSTEM_TRAY_VISUAL is a visual with an alpha channel, the
|
||||||
|
@ -3794,6 +3794,8 @@ gtk_entry_draw_cursor (GtkEntry *entry,
|
|||||||
gint cursor_index;
|
gint cursor_index;
|
||||||
gboolean block;
|
gboolean block;
|
||||||
gboolean block_at_line_end;
|
gboolean block_at_line_end;
|
||||||
|
PangoLayout *layout;
|
||||||
|
const char *text;
|
||||||
|
|
||||||
_gtk_entry_effective_inner_border (entry, &inner_border);
|
_gtk_entry_effective_inner_border (entry, &inner_border);
|
||||||
|
|
||||||
@ -3801,11 +3803,13 @@ gtk_entry_draw_cursor (GtkEntry *entry,
|
|||||||
|
|
||||||
gdk_drawable_get_size (entry->text_area, NULL, &text_area_height);
|
gdk_drawable_get_size (entry->text_area, NULL, &text_area_height);
|
||||||
|
|
||||||
cursor_index = g_utf8_offset_to_pointer (entry->text, entry->current_pos + entry->preedit_cursor) - entry->text;
|
layout = gtk_entry_ensure_layout (entry, TRUE);
|
||||||
|
text = pango_layout_get_text (layout);
|
||||||
|
cursor_index = g_utf8_offset_to_pointer (text, entry->current_pos + entry->preedit_cursor) - text;
|
||||||
if (!entry->overwrite_mode)
|
if (!entry->overwrite_mode)
|
||||||
block = FALSE;
|
block = FALSE;
|
||||||
else
|
else
|
||||||
block = _gtk_text_util_get_block_cursor_location (gtk_entry_ensure_layout (entry, TRUE),
|
block = _gtk_text_util_get_block_cursor_location (layout,
|
||||||
cursor_index, &cursor_rect, &block_at_line_end);
|
cursor_index, &cursor_rect, &block_at_line_end);
|
||||||
|
|
||||||
if (!block)
|
if (!block)
|
||||||
@ -3861,7 +3865,6 @@ gtk_entry_draw_cursor (GtkEntry *entry,
|
|||||||
}
|
}
|
||||||
else /* overwrite_mode */
|
else /* overwrite_mode */
|
||||||
{
|
{
|
||||||
PangoLayout *layout = gtk_entry_ensure_layout (entry, TRUE);
|
|
||||||
GdkColor cursor_color;
|
GdkColor cursor_color;
|
||||||
GdkRectangle rect;
|
GdkRectangle rect;
|
||||||
cairo_t *cr;
|
cairo_t *cr;
|
||||||
|
@ -406,7 +406,7 @@ layout_get_char_width (PangoLayout *layout)
|
|||||||
* @layout: a #PangoLayout
|
* @layout: a #PangoLayout
|
||||||
* @index: index at which cursor is located
|
* @index: index at which cursor is located
|
||||||
* @pos: cursor location
|
* @pos: cursor location
|
||||||
* @at_line_end: whether cursor i sdrawn at line end, not over some
|
* @at_line_end: whether cursor is drawn at line end, not over some
|
||||||
* character
|
* character
|
||||||
*
|
*
|
||||||
* Returns: whether cursor should actually be drawn as a rectangle.
|
* Returns: whether cursor should actually be drawn as a rectangle.
|
||||||
|
Reference in New Issue
Block a user