mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-17 06:10:15 +00:00
widget: Add hack to make label mnemonics work again
Mnemonics for characters that go beyond the baseline (q, y, g) were not being shown, because they are drawn outside of the label's allocated size. This patch just disables the clip-to-size for labels, so that the label can draw outsize of its allocation. In most cases, that works around this bug. https://bugzilla.gnome.org/show_bug.cgi?id=648570
This commit is contained in:
parent
7ae4a06d1f
commit
9bb145a677
@ -5660,6 +5660,20 @@ gtk_cairo_should_draw_window (cairo_t *cr,
|
||||
event->window == window;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gtk_widget_get_clip_draw (GtkWidget *widget)
|
||||
{
|
||||
/* labels are not clipped, because clipping them would cause
|
||||
* mnemonics to not appear on characters that go beyond the
|
||||
* baseline.
|
||||
* https://bugzilla.gnome.org/show_bug.cgi?id=648570
|
||||
*/
|
||||
if (GTK_IS_LABEL (widget))
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* code shared by gtk_container_propagate_draw() and
|
||||
* gtk_widget_draw()
|
||||
*/
|
||||
@ -5673,6 +5687,8 @@ _gtk_widget_draw_internal (GtkWidget *widget,
|
||||
if (!gtk_widget_is_drawable (widget))
|
||||
return;
|
||||
|
||||
clip_to_size &= gtk_widget_get_clip_draw (widget);
|
||||
|
||||
if (clip_to_size)
|
||||
{
|
||||
cairo_rectangle (cr,
|
||||
|
Loading…
Reference in New Issue
Block a user