Re: "undrawing" a line
- From: Davina Armstrong <davina lickey com>
 
- To: Pavel Cisler <pavel eazel com>
 
- Cc: "gtk-app-devel-list gnome org" <gtk-app-devel-list gnome org>,	gtk-list gnome org
 
- Subject: Re: "undrawing" a line
 
- Date: Wed, 13 Dec 2000 12:19:23 -0800
 
Pavel Cisler wrote:
Davina Armstrong wrote:
I posted earlier that I was trying to draw decorations around a GtkLabel
(which is actually part of a composite widget I wrote that packs a
GtkLabel and GtkEntry into a GtkHBox), which I've done successfully -
thanks.  The idea is that I want the decorations to be drawn when
MyWidget gets focus, and "undraw" them when it loses the focus.  I wrote
the following draw_focus function, which is called from
my_widget_focus_in() and my_widget_focus_out():
static void my_widget_draw_focus(GtkWidget* widget)
{
    g_return_if_fail(widget != NULL);
    g_return_if_fail(IS_MY_WIDGET(widget));
    if (GTK_WIDGET_HAS_FOCUS(widget)) {
        /* draw the decoration */
    } else {
        gtk_widget_draw(widget, NULL);
    }
}
The decorations draw when MyWidget gets focus, but don't go away when it
loses the focus.  I've verified that gtk_widget_draw() is being called.
Can anyone tell me what I'm doing wrong?
Thanks!
Davina
Davina,
My guess is that the extra decorations don't go away because the
gtk_widget_draw doesn't erase any of the backgrounds your decorations
are drawn on -- they normally come erased for you in the exposure
callback. You could easily verify this by de-focusing your widget and
causing it to redraw by invalidating it by another window. The part that
you invalidate should redraw without the decorations.
Pavel
Pavel -
I'm sorry it has taken so long to check this.  You are right, covering
it with another window does cause the decorations to disappear, but I
don't know how to invalidate it in code.  Can you (or anyone else)
please help?
Thanks again!
Davina
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]