[wxGTK2] wxTextCtrl: Implemented support for wxTEXT_ALIGNMENT_{LEFT,RIGHT,CENTRE} attributes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35095 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -46,6 +46,8 @@ wxGTK:
|
|||||||
- Base library is now binary compatible when built with wxGTK and wxMotif.
|
- Base library is now binary compatible when built with wxGTK and wxMotif.
|
||||||
- wxTextCtrl::XYToPosition, PositionToXY and GetLineLength calls are now
|
- wxTextCtrl::XYToPosition, PositionToXY and GetLineLength calls are now
|
||||||
instantaneous in case of GTK+2 multi-line controls (Mart Raudsepp)
|
instantaneous in case of GTK+2 multi-line controls (Mart Raudsepp)
|
||||||
|
- Added support for left, centre and right text alignment attributes under
|
||||||
|
GTK+2 multi-line text controls (Mart Raudsepp)
|
||||||
|
|
||||||
wxOS2
|
wxOS2
|
||||||
|
|
||||||
|
@@ -55,12 +55,13 @@ static void wxGtkOnRemoveTag(GtkTextBuffer *buffer,
|
|||||||
GtkTextTag *tag,
|
GtkTextTag *tag,
|
||||||
GtkTextIter *start,
|
GtkTextIter *start,
|
||||||
GtkTextIter *end,
|
GtkTextIter *end,
|
||||||
gpointer user_data)
|
char *prefix)
|
||||||
{
|
{
|
||||||
gchar *name;
|
gchar *name;
|
||||||
g_object_get (tag, "name", &name, NULL);
|
g_object_get (tag, "name", &name, NULL);
|
||||||
|
|
||||||
if (!name || strncmp(name, "WX", 2)) // anonymous tag or not starting with "WX"
|
if (!name || strncmp(name, prefix, strlen(prefix)))
|
||||||
|
// anonymous tag or not starting with prefix - don't remove
|
||||||
g_signal_stop_emission_by_name(buffer, "remove_tag");
|
g_signal_stop_emission_by_name(buffer, "remove_tag");
|
||||||
|
|
||||||
g_free(name);
|
g_free(name);
|
||||||
@@ -77,7 +78,7 @@ static void wxGtkTextApplyTagsFromAttr(GtkTextBuffer *text_buffer,
|
|||||||
GtkTextTag *tag;
|
GtkTextTag *tag;
|
||||||
|
|
||||||
gulong remove_handler_id = g_signal_connect( text_buffer, "remove_tag",
|
gulong remove_handler_id = g_signal_connect( text_buffer, "remove_tag",
|
||||||
G_CALLBACK(wxGtkOnRemoveTag), NULL);
|
G_CALLBACK(wxGtkOnRemoveTag), gpointer("WX"));
|
||||||
gtk_text_buffer_remove_all_tags(text_buffer, start, end);
|
gtk_text_buffer_remove_all_tags(text_buffer, start, end);
|
||||||
g_signal_handler_disconnect( text_buffer, remove_handler_id );
|
g_signal_handler_disconnect( text_buffer, remove_handler_id );
|
||||||
|
|
||||||
@@ -122,6 +123,44 @@ static void wxGtkTextApplyTagsFromAttr(GtkTextBuffer *text_buffer,
|
|||||||
"background-gdk", colBg, NULL );
|
"background-gdk", colBg, NULL );
|
||||||
gtk_text_buffer_apply_tag (text_buffer, tag, start, end);
|
gtk_text_buffer_apply_tag (text_buffer, tag, start, end);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (attr.HasAlignment())
|
||||||
|
{
|
||||||
|
GtkTextIter para_start, para_end = *end;
|
||||||
|
gtk_text_buffer_get_iter_at_line( text_buffer,
|
||||||
|
¶_start,
|
||||||
|
gtk_text_iter_get_line(start) );
|
||||||
|
gtk_text_iter_forward_line(¶_end);
|
||||||
|
|
||||||
|
remove_handler_id = g_signal_connect( text_buffer, "remove_tag",
|
||||||
|
G_CALLBACK(wxGtkOnRemoveTag),
|
||||||
|
gpointer("WXALIGNMENT"));
|
||||||
|
gtk_text_buffer_remove_all_tags( text_buffer, ¶_start, ¶_end );
|
||||||
|
g_signal_handler_disconnect( text_buffer, remove_handler_id );
|
||||||
|
|
||||||
|
GtkJustification align;
|
||||||
|
switch (attr.GetAlignment())
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
align = GTK_JUSTIFY_LEFT;
|
||||||
|
break;
|
||||||
|
case wxTEXT_ALIGNMENT_RIGHT:
|
||||||
|
align = GTK_JUSTIFY_RIGHT;
|
||||||
|
break;
|
||||||
|
case wxTEXT_ALIGNMENT_CENTER:
|
||||||
|
align = GTK_JUSTIFY_CENTER;
|
||||||
|
break;
|
||||||
|
// gtk+ doesn't support justify as of gtk+-2.7.4
|
||||||
|
}
|
||||||
|
|
||||||
|
g_snprintf(buf, sizeof(buf), "WXALIGNMENT %d", align);
|
||||||
|
tag = gtk_text_tag_table_lookup( gtk_text_buffer_get_tag_table( text_buffer ),
|
||||||
|
buf );
|
||||||
|
if (!tag)
|
||||||
|
tag = gtk_text_buffer_create_tag( text_buffer, buf,
|
||||||
|
"justification", align, NULL );
|
||||||
|
gtk_text_buffer_apply_tag( text_buffer, tag, ¶_start, ¶_end );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -55,12 +55,13 @@ static void wxGtkOnRemoveTag(GtkTextBuffer *buffer,
|
|||||||
GtkTextTag *tag,
|
GtkTextTag *tag,
|
||||||
GtkTextIter *start,
|
GtkTextIter *start,
|
||||||
GtkTextIter *end,
|
GtkTextIter *end,
|
||||||
gpointer user_data)
|
char *prefix)
|
||||||
{
|
{
|
||||||
gchar *name;
|
gchar *name;
|
||||||
g_object_get (tag, "name", &name, NULL);
|
g_object_get (tag, "name", &name, NULL);
|
||||||
|
|
||||||
if (!name || strncmp(name, "WX", 2)) // anonymous tag or not starting with "WX"
|
if (!name || strncmp(name, prefix, strlen(prefix)))
|
||||||
|
// anonymous tag or not starting with prefix - don't remove
|
||||||
g_signal_stop_emission_by_name(buffer, "remove_tag");
|
g_signal_stop_emission_by_name(buffer, "remove_tag");
|
||||||
|
|
||||||
g_free(name);
|
g_free(name);
|
||||||
@@ -77,7 +78,7 @@ static void wxGtkTextApplyTagsFromAttr(GtkTextBuffer *text_buffer,
|
|||||||
GtkTextTag *tag;
|
GtkTextTag *tag;
|
||||||
|
|
||||||
gulong remove_handler_id = g_signal_connect( text_buffer, "remove_tag",
|
gulong remove_handler_id = g_signal_connect( text_buffer, "remove_tag",
|
||||||
G_CALLBACK(wxGtkOnRemoveTag), NULL);
|
G_CALLBACK(wxGtkOnRemoveTag), gpointer("WX"));
|
||||||
gtk_text_buffer_remove_all_tags(text_buffer, start, end);
|
gtk_text_buffer_remove_all_tags(text_buffer, start, end);
|
||||||
g_signal_handler_disconnect( text_buffer, remove_handler_id );
|
g_signal_handler_disconnect( text_buffer, remove_handler_id );
|
||||||
|
|
||||||
@@ -122,6 +123,44 @@ static void wxGtkTextApplyTagsFromAttr(GtkTextBuffer *text_buffer,
|
|||||||
"background-gdk", colBg, NULL );
|
"background-gdk", colBg, NULL );
|
||||||
gtk_text_buffer_apply_tag (text_buffer, tag, start, end);
|
gtk_text_buffer_apply_tag (text_buffer, tag, start, end);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (attr.HasAlignment())
|
||||||
|
{
|
||||||
|
GtkTextIter para_start, para_end = *end;
|
||||||
|
gtk_text_buffer_get_iter_at_line( text_buffer,
|
||||||
|
¶_start,
|
||||||
|
gtk_text_iter_get_line(start) );
|
||||||
|
gtk_text_iter_forward_line(¶_end);
|
||||||
|
|
||||||
|
remove_handler_id = g_signal_connect( text_buffer, "remove_tag",
|
||||||
|
G_CALLBACK(wxGtkOnRemoveTag),
|
||||||
|
gpointer("WXALIGNMENT"));
|
||||||
|
gtk_text_buffer_remove_all_tags( text_buffer, ¶_start, ¶_end );
|
||||||
|
g_signal_handler_disconnect( text_buffer, remove_handler_id );
|
||||||
|
|
||||||
|
GtkJustification align;
|
||||||
|
switch (attr.GetAlignment())
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
align = GTK_JUSTIFY_LEFT;
|
||||||
|
break;
|
||||||
|
case wxTEXT_ALIGNMENT_RIGHT:
|
||||||
|
align = GTK_JUSTIFY_RIGHT;
|
||||||
|
break;
|
||||||
|
case wxTEXT_ALIGNMENT_CENTER:
|
||||||
|
align = GTK_JUSTIFY_CENTER;
|
||||||
|
break;
|
||||||
|
// gtk+ doesn't support justify as of gtk+-2.7.4
|
||||||
|
}
|
||||||
|
|
||||||
|
g_snprintf(buf, sizeof(buf), "WXALIGNMENT %d", align);
|
||||||
|
tag = gtk_text_tag_table_lookup( gtk_text_buffer_get_tag_table( text_buffer ),
|
||||||
|
buf );
|
||||||
|
if (!tag)
|
||||||
|
tag = gtk_text_buffer_create_tag( text_buffer, buf,
|
||||||
|
"justification", align, NULL );
|
||||||
|
gtk_text_buffer_apply_tag( text_buffer, tag, ¶_start, ¶_end );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user