RE: settting the background and foreground



On Tue, 2011-01-18 at 00:23 -0500, José Alburquerque wrote:
> 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.

This one was meant to be mailed privately also, sorry.  I don't know why
I thought I pressed the reply and not reply-to-all button.  At any rate,
the answer, though quickly composed, should still be valid.

> 
> 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:jaalburquerque cox net] 
> > Sent: Wednesday, January 12, 2011 11:22 AM
> > To: charles seedle rigaku com
> > Cc: jaalburquerque cox net; gtkmm-list gnome org
> > 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:jaalburquerque cox net] 
> > > Sent: Tuesday, January 11, 2011 12:51 PM
> > > To: charles seedle rigaku com
> > > Cc: <gtkmm-list gnome org>
> > > Subject: Re: settting the background and foreground
> > > 
> > > 
> > >  
> > > 
> > > El Jan 10, 2011, a las 4:32 PM, "Charles Seedle"
> > > <charles seedle rigaku com> 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
> > >         gtkmm-list gnome org
> > >         http://mail.gnome.org/mailman/listinfo/gtkmm-list
> > >         
> > >         
> > 
> 

-- 
José



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]