mirror of
https://github.com/vim/vim.git
synced 2025-09-25 03:54:15 -04:00
patch 8.0.1466: older GTK versions don't have gtk_entry_get_text_length()
Problem: Older GTK versions don't have gtk_entry_get_text_length(). Solution: Add a function with #ifdefs to take care of GTK version differences. (Kazunobu Kuriyama, closes #2605)
This commit is contained in:
@@ -2144,6 +2144,37 @@ convert_localized_message(char_u **buffer, const char *message)
|
|||||||
return (const char *)*buffer;
|
return (const char *)*buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns the number of characters in GtkEntry.
|
||||||
|
*/
|
||||||
|
static unsigned long
|
||||||
|
entry_get_text_length(GtkEntry *entry)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail(entry != NULL, 0);
|
||||||
|
g_return_val_if_fail(GTK_IS_ENTRY(entry) == TRUE, 0);
|
||||||
|
|
||||||
|
#if GTK_CHECK_VERSION(2,18,0)
|
||||||
|
/* 2.18 introduced a new object GtkEntryBuffer to handle text data for
|
||||||
|
* GtkEntry instead of letting each instance of the latter have its own
|
||||||
|
* storage for that. The code below is almost identical to the
|
||||||
|
* implementation of gtk_entry_get_text_length() for the versions >= 2.18.
|
||||||
|
*/
|
||||||
|
return gtk_entry_buffer_get_length(gtk_entry_get_buffer(entry));
|
||||||
|
#elif GTK_CHECK_VERSION(2,14,0)
|
||||||
|
/* 2.14 introduced a new function to avoid memory management bugs which can
|
||||||
|
* happen when gtk_entry_get_text() is used without due care and attention.
|
||||||
|
*/
|
||||||
|
return gtk_entry_get_text_length(entry);
|
||||||
|
#else
|
||||||
|
/* gtk_entry_get_text() returns the pointer to the storage allocated
|
||||||
|
* internally by the widget. Accordingly, use the one with great care:
|
||||||
|
* Don't free it nor modify the contents it points to; call the function
|
||||||
|
* every time you need the pointer since its value may have been changed
|
||||||
|
* by the widget. */
|
||||||
|
return g_utf8_strlen(gtk_entry_get_text(entry), -1);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
find_replace_dialog_create(char_u *arg, int do_replace)
|
find_replace_dialog_create(char_u *arg, int do_replace)
|
||||||
{
|
{
|
||||||
@@ -2198,10 +2229,9 @@ find_replace_dialog_create(char_u *arg, int do_replace)
|
|||||||
* For :promptrepl dialog, give it to 'with' entry if 'what' has an
|
* For :promptrepl dialog, give it to 'with' entry if 'what' has an
|
||||||
* non-empty entry; otherwise, to 'what' entry. */
|
* non-empty entry; otherwise, to 'what' entry. */
|
||||||
gtk_widget_grab_focus(frdp->what);
|
gtk_widget_grab_focus(frdp->what);
|
||||||
if (do_replace && gtk_entry_get_text_length(GTK_ENTRY(frdp->what)))
|
if (do_replace && entry_get_text_length(GTK_ENTRY(frdp->what)) > 0)
|
||||||
gtk_widget_grab_focus(frdp->with);
|
gtk_widget_grab_focus(frdp->with);
|
||||||
|
|
||||||
|
|
||||||
vim_free(entry_text);
|
vim_free(entry_text);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@@ -771,6 +771,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1466,
|
||||||
/**/
|
/**/
|
||||||
1465,
|
1465,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user