Charles, I'm not in the business of private e-mailing but I will offer
you a little hint hoping it helps.  Any other question you have should
be posted to the list since there are many more people that can answer
your questions.

My one suggestion (by just quickly looking at your ExampleWindow
constructor) is that you don't try to get the Gdk::Window in the
constructor.  Instead, connect to the signal_realize() in the
constructor.  Get the Gdk::Window in the handler that you use to connect
to the signal_realize() and do the color setting in the handler and not
in the constructor.

I wont answer private e-mails because I have many things to do.  Please
ask next time on the list.  Many more people can answer your questions
there.

On Mon, 2011-01-17 at 08:19 -0600, Charles Seedle wrote:
> Here is an example of the foreground/background problem that I am seeing. See 
> the attachments.
> 
> Randy Seedle
> 
> 
> 
> -----Original Message-----
> From: José Alburquerque [mailto:[email protected]] 
> Sent: Wednesday, January 12, 2011 11:22 AM
> To: [email protected]
> Cc: [email protected]; [email protected]
> Subject: RE: settting the background and foreground
> 
> On Wed, 2011-01-12 at 10:15 -0600, Charles Seedle wrote:
> > I tried putting the commands in the callback signal_realize
> > 
> >  
> > 
> > signal_realize().connect (sigc::mem_fun (*this,
> > &ExampleWindow::onWindowRealize));
> > 
> >  
> > 
> >  
> > 
> > void ExampleWindow::onWindowRealize()
> > 
> > {
> > 
> >   Glib::RefPtr<Gdk::Window> win = get_window();
> > 
> >   Glib::RefPtr<Gdk::GC> some_gc = Gdk::GC::create(win);
> > 
> >   Glib::RefPtr<Gdk::Colormap> some_colormap = get_default_colormap();
> > 
> >   my_gray.set_red(0xc900);
> > 
> >   my_gray.set_green(0xca00);
> > 
> >   my_gray.set_blue(0xc800);
> > 
> >   some_colormap->alloc_color(my_gray);
> > 
> >  
> > 
> >   my_blue.set_red(0x0000);
> > 
> >   my_blue.set_green(0x7200);
> > 
> >   my_blue.set_blue(0xc800);
> > 
> >   some_colormap->alloc_color(my_blue);
> > 
> >  
> > 
> >   some_gc->set_foreground(my_gray);
> > 
> >   some_gc->set_background(my_blue);
> > 
> > }
> > 
> >  
> > 
> > The program console showed:
> > 
> >  
> > 
> > (Hello:2839): Gdk-CRITICAL **: gdk_gc_new: assertion `drawable !=
> > NULL' failed
> > 
> >  
> > 
> > (Hello:2839): GLib-GObject-CRITICAL **: g_object_unref: assertion
> > `G_IS_OBJECT (object)' failed
> > 
> >  
> > 
> > But the background and foreground were unchanged.
> > 
> >  
> > 
> >  
> > 
> > I also tried using: 
> > 
> > Glib::RefPtr<Gdk::Window> win = get_window();
> > 
> > gtk_widget_modify_bg( GtkWidget(win), (GtkStateType)Gtk::STATE_NORMAL,
> > (GdkColor*)&my_blue );
> > 
> > gtk_widget_modify_fg( GtkWidget(win), (GtkStateType)Gtk::STATE_NORMAL,
> > (GdkColor*)&my_gray );
> > 
> > It won’t compile because it does not like the reference pointer to
> > widget conversion.
> > 
> > Any other ideas ??
> 
> Try using the Gtk::Widget::modify_* methods instead of the gtk+
> functions (or use win->gobj() and a_color.gobj() with the functions).
> If you're experiencing a bug, a small complete example exhibiting the
> bug would be useful.  In that case, just file a bug so that the issue
> can be looked at.
> 
> > 
> >  
> > 
> > Randy Seedle
> > 
> >  
> > 
> > PS: This solution needs to work with “Gtkmm”.
> > 
> >  
> > 
> >  
> > 
> > From: José Alburquerque [mailto:[email protected]] 
> > Sent: Tuesday, January 11, 2011 12:51 PM
> > To: [email protected]
> > Cc: <[email protected]>
> > Subject: Re: settting the background and foreground
> > 
> > 
> >  
> > 
> > El Jan 10, 2011, a las 4:32 PM, "Charles Seedle"
> > <[email protected]> escribió:
> > 
> > 
> >  
> > 
> > 
> >         I am tring to set the background and foreground of my main
> >         window. Is there a good example of how to do this out there ?
> >         
> >         I keep getting the messeges:
> >         
> >          
> >         
> >          
> >         
> >         (Hello:22855): Gdk-CRITICAL **: gdk_gc_new: assertion
> >         `drawable != NULL' failed
> >         
> >          
> >         
> >         (Hello:22855): Gdk-CRITICAL **: gdk_gc_set_foreground:
> >         assertion `GDK_IS_GC (gc)' failed
> >         
> >          
> >         
> >         (Hello:22855): Gdk-CRITICAL **: gdk_gc_set_background:
> >         assertion `GDK_IS_GC (gc)' failed
> >         
> >          
> >         
> >         (Hello:22855): GLib-GObject-CRITICAL **: g_object_unref:
> >         assertion `G_IS_OBJECT (object)' failed
> >         
> >          
> >         
> >          
> >         
> >         From this code:
> >         
> >           Glib::RefPtr<Gdk::Window> win = get_window();
> >         
> >          
> >         
> >           Glib::RefPtr<Gdk::GC> some_gc = Gdk::GC::create(win);
> >         
> >           Glib::RefPtr<Gdk::Colormap> some_colormap =
> >         get_default_colormap();
> >         
> >           set_decorated(false);
> >         
> >          
> >         
> >           my_gray.set_red(0xc900);
> >         
> >           my_gray.set_green(0xca00);
> >         
> >           my_gray.set_blue(0xc800);
> >         
> >          
> >         
> >           some_colormap->alloc_color(my_gray);
> >         
> >           some_gc->set_foreground(my_gray);
> >         
> >          
> >         
> >           my_blue.set_red(0x0000);
> >         
> >           my_blue.set_green(0x7200);
> >         
> >           my_blue.set_blue(0xc800);
> >         
> >          
> >         
> >           some_colormap->alloc_color(my_blue);
> >         
> >           some_gc->set_background(my_blue);
> >         
> >         
> >  
> > 
> > 
> > 
> > When getting the window of a widget, you have to be sure it is
> > realized first.  See Gtk::Widget::signal_realize().  Or maybe use one
> > of the Gtk::Widget::modify_* methods.
> > 
> > 
> > 
> >  
> > 
> >  
> > 
> >  
> > 
> >  
> > 
> > Randy
> > 
> > 
> >         _______________________________________________
> >         gtkmm-list mailing list
> >         [email protected]
> >         http://mail.gnome.org/mailman/listinfo/gtkmm-list
> >         
> >         
> 

-- 
José

_______________________________________________
gtkmm-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gtkmm-list

Reply via email to