[gtk+] gtk-demo: add menu check and radio examples
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] gtk-demo: add menu check and radio examples
- Date: Mon, 15 Feb 2016 15:19:59 +0000 (UTC)
commit 1131ae27a0f38e9b406d5b9e04d58c2dac4646cb
Author: Caolán McNamara <caolanm redhat com>
Date: Thu Feb 11 16:48:51 2016 +0000
gtk-demo: add menu check and radio examples
note that if the "menu" context has no parent then the GTK_STATE_FLAG_NORMAL
menu entries are invisible against the white background.
https://bugzilla.gnome.org/show_bug.cgi?id=762080
demos/gtk-demo/foreigndrawing.c | 59 ++++++++++++++++++++++++++++++++++----
1 files changed, 52 insertions(+), 7 deletions(-)
---
diff --git a/demos/gtk-demo/foreigndrawing.c b/demos/gtk-demo/foreigndrawing.c
index c3084f3..1ece6a2 100644
--- a/demos/gtk-demo/foreigndrawing.c
+++ b/demos/gtk-demo/foreigndrawing.c
@@ -145,30 +145,75 @@ draw_menu (GtkWidget *widget,
{
GtkStyleContext *menu_context;
GtkStyleContext *menuitem_context;
+ GtkStyleContext *hovermenuitem_context;
GtkStyleContext *arrowmenuitem_context;
+ GtkStyleContext *checkmenuitem_context;
+ GtkStyleContext *radiomenuitem_context;
+ GtkStyleContext *disablemenuitem_context;
/* This information is taken from the GtkMenu docs, see "CSS nodes" */
- menu_context = get_style (NULL, "menu");
+ menu_context = get_style (gtk_widget_get_style_context(widget), "menu");
gtk_render_background (menu_context, cr, x, y, width, height);
gtk_render_frame (menu_context, cr, x, y, width, height);
- menuitem_context = get_style (menu_context, "menuitem:hover");
- gtk_render_background (menuitem_context, cr, x, y, width, 20);
- gtk_render_frame (menuitem_context, cr, x, y, width, 20);
+ hovermenuitem_context = get_style (menu_context, "menuitem:hover");
+ gtk_render_background (hovermenuitem_context, cr, x, y, width, 20);
+ gtk_render_frame (hovermenuitem_context, cr, x, y, width, 20);
/* arrow for left to right */
- arrowmenuitem_context = get_style (menuitem_context, "arrow:dir(ltr)");
+ arrowmenuitem_context = get_style (hovermenuitem_context, "arrow:dir(ltr)");
gtk_render_arrow (arrowmenuitem_context, cr, G_PI / 2, x + width - 20, y, 20);
+ g_object_unref (arrowmenuitem_context);
+
+ menuitem_context = get_style (menu_context, "menuitem");
gtk_render_background (menuitem_context, cr, x, y + 20, width, 20);
gtk_render_frame (menuitem_context, cr, x, y + 20, width, 20);
- g_object_unref (arrowmenuitem_context);
- /* arrow for right to left */
+ disablemenuitem_context = get_style (menu_context, "menuitem:disabled");
+
+ /* arrow for right to left, sensitive */
arrowmenuitem_context = get_style (menuitem_context, "arrow:dir(rtl)");
gtk_render_arrow (arrowmenuitem_context, cr, G_PI / 2, x, y + 20, 20);
+ g_object_unref (arrowmenuitem_context);
+ /* arrow for right to left, insensitive */
+ arrowmenuitem_context = get_style (disablemenuitem_context, "arrow:dir(rtl)");
+ gtk_render_arrow (arrowmenuitem_context, cr, G_PI / 2, x + width - 20, y + 20, 20);
+
+ gtk_render_background (menuitem_context, cr, x, y + 40, width, 20);
+ gtk_render_frame (menuitem_context, cr, x, y + 40, width, 20);
+
+ /* check enabled, sensitive */
+ checkmenuitem_context = get_style (menuitem_context, "check:checked");
+ gtk_render_frame (checkmenuitem_context, cr, x + 2, y + 40, 16, 16);
+ gtk_render_check (checkmenuitem_context, cr, x + 2, y + 40, 16, 16);
+ g_object_unref (checkmenuitem_context);
+
+ /* check unchecked, insensitive */
+ checkmenuitem_context = get_style (disablemenuitem_context, "check");
+ gtk_render_frame (checkmenuitem_context, cr, x + width - 18, y + 40, 16, 16);
+ gtk_render_check (checkmenuitem_context, cr, x + width - 18, y + 40, 16, 16);
+
+ gtk_render_background (menuitem_context, cr, x, y + 60, width, 20);
+ gtk_render_frame (menuitem_context, cr, x, y + 60, width, 20);
+
+ /* radio checked, sensitive */
+ radiomenuitem_context = get_style (menuitem_context, "radio:checked");
+ gtk_render_frame (radiomenuitem_context, cr, x + 2, y + 60, 16, 16);
+ gtk_render_option (radiomenuitem_context, cr, x + 2, y + 60, 16, 16);
+ g_object_unref (radiomenuitem_context);
+
+ /* radio unchecked, insensitive */
+ radiomenuitem_context = get_style (disablemenuitem_context, "radio");
+ gtk_render_frame (radiomenuitem_context, cr, x + width - 18, y + 60, 16, 16);
+ gtk_render_option (radiomenuitem_context, cr, x + width - 18, y + 60, 16, 16);
+
+ g_object_unref (disablemenuitem_context);
+ g_object_unref (radiomenuitem_context);
+ g_object_unref (checkmenuitem_context);
g_object_unref (arrowmenuitem_context);
+ g_object_unref (hovermenuitem_context);
g_object_unref (menuitem_context);
g_object_unref (menu_context);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]