Re: Custom widget painting with GtkStyle
- From: Artur Galyamov <artur-pub yandex ru>
- To: Sebastian PajÄk <spconv+m gmail com>
- Cc: gtk-app-devel-list gnome org
- Subject: Re: Custom widget painting with GtkStyle
- Date: Sat, 19 Dec 2009 17:48:19 +0300
Hi, Sebastian!
static gboolean
expose_event(GtkWidget *widget, GdkEventExpose *event)
{
static GtkStyle *style = NULL;
int x = widget->allocation.x;
int y = widget->allocation.y;
int width = widget->allocation.width;
int height = widget->allocation.height;
if (!style)
// key phrase:
style = gtk_rc_get_style_by_paths(gtk_settings_get_default(), NULL,
"GtkButton", GTK_TYPE_BUTTON);
gtk_style_attach(style, widget->window);
gtk_paint_box(style, widget->window,
GTK_STATE_NORMAL,
GTK_SHADOW_OUT, &event->area,
widget, "button",
x, y, width, height);
gtk_style_detach(style);
return FALSE;
}
Style engine may or may not heavily depend on widget's class or even
properties, so don't expect exact emulation for all classes on all
engines. I think it is why things are not documented.
See $SRC/gtk/gtkbutton.c on how to paint button's focus, default, etc
exactly as GtkButton does.
--
Artur
19.12.09, 14:09, "Sebastian PajÄk" <spconv+m gmail com>:
Hi
I'm trying to create a shape for my custom widget using GtkStyle
(gtk_paint func. family). For a start I want a shape like a button has
(shadow + relief). This is my code for expose event:
static int
clv_expose(GtkWidget *widget, GdkEventExpose *event) // clv is a
subclass of GtkConainer
{
int x = widget->allocation.x;
int y = widget->allocation.y;
int width = widget->allocation.width;
int height = widget->allocation.height;
gtk_paint_box(widget->style, widget->window,
GTK_STATE_NORMAL,
GTK_SHADOW_IN, &event->area,
widget, "button",
x+4, y+4, width-8, height-8);
std::printf("EXPOSE");
return FALSE;
}
clv_expose is connected and is called. Unfortunately it doesn't work.
Only empty, flat window is showing, no shadow like in a button. Do you
know what can be wrong? Is GtkConainer good for sublassing in this
situation?
I cannot find any info on gtk/gdk drawing using google (only cairo).
Gtk API reference is very poor abou it. Some hints, simple exmples or
howtos will be helpful for a GTK+ beginner like me :).
Thanks in advance
Sebastian
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list gnome org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]