[glade--]Fix for set_size_request
- From: Mark Jones <mark jones106 verizon net>
- To: <glademm-list gnome org>
- Subject: [glade--]Fix for set_size_request
- Date: Wed, 23 Oct 2002 0:26:30 -0500
I looked into this tonight. There are two things missing related to size and positioning (that I see):
1. Set size request not written. The source of this is in: writers/widget.cc (line 85)
void Gtk_Widget::Configure(const Widget &w, CxxFile &f,const std::string &instance) const
{
....some lines of code here
// then:
WriteIntIntProperty(w,f,instance, "width", "height",
GTKMM2?"size_request":"usize");
// Should be:
WriteIntIntProperty(w,f,instance, GTKMM2?"width_request":"width", GTKMM2?"height_request":"height",
GTKMM2?"size_request":"usize");
With this change it works for Gtkmm2.
But, it needs to have the call to Fixed::put give the right values of x and y for a widget on a fixed container. Right now it prints 0 and 0. However, if you change the .glade file around a little, it then works. So perhaps it is not reading the .glade file correctly?
Old glade section (glade-- prints 0's):
<child>
<widget class="GtkSpinButton" id="spinbutton1">
<property name="width_request">112</property>
<property name="height_request">32</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="climb_rate">1</property>
<property name="digits">0</property>
<property name="numeric">False</property>
<property name="update_policy">GTK_UPDATE_ALWAYS</property>
<property name="snap_to_ticks">False</property>
<property name="wrap">False</property>
<property name="adjustment">1 0 100 1 10 10</property>
</widget>
<packing>
<property name="x">8</property>
<property name="y">80</property>
</packing>
</child>
Alternate glade section (glade-- prints the correct values for x and y):
<child>
<widget class="GtkSpinButton" id="spinbutton1">
<property name="width_request">112</property>
<property name="height_request">32</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="climb_rate">1</property>
<property name="digits">0</property>
<property name="numeric">False</property>
<property name="update_policy">GTK_UPDATE_ALWAYS</property>
<property name="snap_to_ticks">False</property>
<property name="wrap">False</property>
<property name="adjustment">1 0 100 1 10 10</property>
<property name="x">8</property>
<property name="y">80</property>
</widget>
<packing>
<property name="x">8</property>
<property name="y">80</property>
</packing>
</child>
You'll notice I just copied the properties out of the packing section to the section above. Then it finds them as properties when it looks for them in writers/fixed.cc:
void Gtk_Fixed::AddChild(const Widget &w,CxxFile &f,const std::string &instance) const
{ int x=w.getIntProperty("x",0);
int y=w.getIntProperty("y",0);
I am not sure what is wrong here, whether glade is writing the xml wrong, or whether glade-- is not parsing it right, or if the code above should call something other than getIntProperty().
The line of code it produces in the whatever_glade.cc file is (in case that was not clear):
fixed1->put(*spinbutton1, 8, 80);
Mark
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]