Merge branch 'quartz-elide-underscores' into 'master'
Bring back elide_underscores See merge request GNOME/gtk!3581
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
#include "gtkmenutrackerprivate.h"
|
||||
#include "gtkicontheme.h"
|
||||
#include "gtkquartz.h"
|
||||
#include "gtkprivate.h"
|
||||
|
||||
#include <gdk/macos/gdkmacos.h>
|
||||
#include <gdk/macos/gdkmacoskeymap-private.h>
|
||||
@@ -231,7 +232,7 @@ icon_loaded (GObject *object,
|
||||
|
||||
- (void)didChangeLabel
|
||||
{
|
||||
const char *label = gtk_menu_tracker_item_get_label (trackerItem);
|
||||
char *label = _gtk_elide_underscores (gtk_menu_tracker_item_get_label (trackerItem));
|
||||
|
||||
NSString *title = [NSString stringWithUTF8String:label ? : ""];
|
||||
|
||||
@@ -256,6 +257,8 @@ icon_loaded (GObject *object,
|
||||
}
|
||||
|
||||
[self setTitle:title];
|
||||
|
||||
g_free (label);
|
||||
}
|
||||
|
||||
- (void)didChangeIcon
|
||||
|
||||
@@ -266,3 +266,46 @@ gtk_get_portal_session_path (GDBusConnection *connection,
|
||||
{
|
||||
return get_portal_path (connection, "session", token);
|
||||
}
|
||||
|
||||
char *
|
||||
_gtk_elide_underscores (const char *original)
|
||||
{
|
||||
char *q, *result;
|
||||
const char *p, *end;
|
||||
gsize len;
|
||||
gboolean last_underscore;
|
||||
|
||||
if (!original)
|
||||
return NULL;
|
||||
|
||||
len = strlen (original);
|
||||
q = result = g_malloc (len + 1);
|
||||
last_underscore = FALSE;
|
||||
|
||||
end = original + len;
|
||||
for (p = original; p < end; p++)
|
||||
{
|
||||
if (!last_underscore && *p == '_')
|
||||
last_underscore = TRUE;
|
||||
else
|
||||
{
|
||||
last_underscore = FALSE;
|
||||
if (original + 2 <= p && p + 1 <= end &&
|
||||
p[-2] == '(' && p[-1] == '_' && p[0] != '_' && p[1] == ')')
|
||||
{
|
||||
q--;
|
||||
*q = '\0';
|
||||
p++;
|
||||
}
|
||||
else
|
||||
*q++ = *p;
|
||||
}
|
||||
}
|
||||
|
||||
if (last_underscore)
|
||||
*q++ = '_';
|
||||
|
||||
*q = '\0';
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -144,6 +144,8 @@ GBytes *get_emoji_data (void);
|
||||
|
||||
#endif /* G_ENABLE_DEBUG */
|
||||
|
||||
char * _gtk_elide_underscores (const char *original);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __GTK_PRIVATE_H__ */
|
||||
|
||||
Reference in New Issue
Block a user