diff --git a/gramps/src/gramps.glade b/gramps/src/gramps.glade
index ce3215173..99cccdee2 100644
--- a/gramps/src/gramps.glade
+++ b/gramps/src/gramps.glade
@@ -730,6 +730,7 @@
 	  <widget>
 	    <class>GtkCList</class>
 	    <name>person_list</name>
+	    <height>350</height>
 	    <can_focus>True</can_focus>
 	    <signal>
 	      <name>select_row</name>
@@ -746,6 +747,11 @@
 	      <handler>on_person_list_click_column</handler>
 	      <last_modification_time>Thu, 07 Dec 2000 14:37:54 GMT</last_modification_time>
 	    </signal>
+	    <signal>
+	      <name>key_release_event</name>
+	      <handler>on_main_key_release_event</handler>
+	      <last_modification_time>Sun, 02 Sep 2001 02:08:07 GMT</last_modification_time>
+	    </signal>
 	    <columns>8</columns>
 	    <column_widths>250,60,70,150,100,5,5,5</column_widths>
 	    <selection_mode>GTK_SELECTION_SINGLE</selection_mode>
@@ -1981,699 +1987,36 @@
       </widget>
 
       <widget>
-	<class>GtkTable</class>
-	<name>table1</name>
-	<rows>15</rows>
-	<columns>9</columns>
-	<homogeneous>False</homogeneous>
-	<row_spacing>0</row_spacing>
-	<column_spacing>0</column_spacing>
+	<class>GtkScrolledWindow</class>
+	<name>scrolledwindow28</name>
+	<hscrollbar_policy>GTK_POLICY_AUTOMATIC</hscrollbar_policy>
+	<vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
+	<hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
+	<vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
 
 	<widget>
-	  <class>GtkEntry</class>
-	  <name>pv4</name>
+	  <class>GnomeCanvas</class>
+	  <name>canvas1</name>
 	  <can_focus>True</can_focus>
 	  <signal>
-	    <name>button_press_event</name>
-	    <handler>on_pv_button_press_event</handler>
-	    <last_modification_time>Sun, 15 Jul 2001 21:18:50 GMT</last_modification_time>
+	    <name>event</name>
+	    <handler>on_canvas1_event</handler>
+	    <last_modification_time>Sun, 02 Sep 2001 21:58:31 GMT</last_modification_time>
 	  </signal>
-	  <editable>False</editable>
-	  <text_visible>True</text_visible>
-	  <text_max_length>0</text_max_length>
-	  <text></text>
-	  <child>
-	    <left_attach>5</left_attach>
-	    <right_attach>6</right_attach>
-	    <top_attach>1</top_attach>
-	    <bottom_attach>2</bottom_attach>
-	    <xpad>3</xpad>
-	    <ypad>3</ypad>
-	    <xexpand>True</xexpand>
-	    <yexpand>True</yexpand>
-	    <xshrink>False</xshrink>
-	    <yshrink>False</yshrink>
-	    <xfill>True</xfill>
-	    <yfill>False</yfill>
-	  </child>
-	</widget>
-
-	<widget>
-	  <class>GtkEntry</class>
-	  <name>pv5</name>
-	  <can_focus>True</can_focus>
-	  <signal>
-	    <name>button_press_event</name>
-	    <handler>on_pv_button_press_event</handler>
-	    <last_modification_time>Sun, 15 Jul 2001 21:19:01 GMT</last_modification_time>
-	  </signal>
-	  <editable>False</editable>
-	  <text_visible>True</text_visible>
-	  <text_max_length>0</text_max_length>
-	  <text></text>
-	  <child>
-	    <left_attach>5</left_attach>
-	    <right_attach>6</right_attach>
-	    <top_attach>5</top_attach>
-	    <bottom_attach>6</bottom_attach>
-	    <xpad>3</xpad>
-	    <ypad>3</ypad>
-	    <xexpand>True</xexpand>
-	    <yexpand>True</yexpand>
-	    <xshrink>False</xshrink>
-	    <yshrink>False</yshrink>
-	    <xfill>True</xfill>
-	    <yfill>False</yfill>
-	  </child>
-	</widget>
-
-	<widget>
-	  <class>GtkEntry</class>
-	  <name>pv6</name>
-	  <can_focus>True</can_focus>
-	  <signal>
-	    <name>button_press_event</name>
-	    <handler>on_pv_button_press_event</handler>
-	    <last_modification_time>Sun, 15 Jul 2001 21:19:10 GMT</last_modification_time>
-	  </signal>
-	  <editable>False</editable>
-	  <text_visible>True</text_visible>
-	  <text_max_length>0</text_max_length>
-	  <text></text>
-	  <child>
-	    <left_attach>5</left_attach>
-	    <right_attach>6</right_attach>
-	    <top_attach>9</top_attach>
-	    <bottom_attach>10</bottom_attach>
-	    <xpad>3</xpad>
-	    <ypad>3</ypad>
-	    <xexpand>True</xexpand>
-	    <yexpand>True</yexpand>
-	    <xshrink>False</xshrink>
-	    <yshrink>False</yshrink>
-	    <xfill>True</xfill>
-	    <yfill>False</yfill>
-	  </child>
-	</widget>
-
-	<widget>
-	  <class>GtkEntry</class>
-	  <name>pv7</name>
-	  <can_focus>True</can_focus>
-	  <signal>
-	    <name>button_press_event</name>
-	    <handler>on_pv_button_press_event</handler>
-	    <last_modification_time>Sun, 15 Jul 2001 21:19:20 GMT</last_modification_time>
-	  </signal>
-	  <editable>False</editable>
-	  <text_visible>True</text_visible>
-	  <text_max_length>0</text_max_length>
-	  <text></text>
-	  <child>
-	    <left_attach>5</left_attach>
-	    <right_attach>6</right_attach>
-	    <top_attach>13</top_attach>
-	    <bottom_attach>14</bottom_attach>
-	    <xpad>3</xpad>
-	    <ypad>3</ypad>
-	    <xexpand>True</xexpand>
-	    <yexpand>True</yexpand>
-	    <xshrink>False</xshrink>
-	    <yshrink>False</yshrink>
-	    <xfill>True</xfill>
-	    <yfill>False</yfill>
-	  </child>
-	</widget>
-
-	<widget>
-	  <class>GtkEntry</class>
-	  <name>pv2</name>
-	  <can_focus>True</can_focus>
-	  <signal>
-	    <name>button_press_event</name>
-	    <handler>on_pv_button_press_event</handler>
-	    <last_modification_time>Sun, 15 Jul 2001 21:18:28 GMT</last_modification_time>
-	  </signal>
-	  <editable>False</editable>
-	  <text_visible>True</text_visible>
-	  <text_max_length>0</text_max_length>
-	  <text></text>
-	  <child>
-	    <left_attach>3</left_attach>
-	    <right_attach>4</right_attach>
-	    <top_attach>3</top_attach>
-	    <bottom_attach>4</bottom_attach>
-	    <xpad>3</xpad>
-	    <ypad>3</ypad>
-	    <xexpand>True</xexpand>
-	    <yexpand>True</yexpand>
-	    <xshrink>False</xshrink>
-	    <yshrink>False</yshrink>
-	    <xfill>True</xfill>
-	    <yfill>False</yfill>
-	  </child>
-	</widget>
-
-	<widget>
-	  <class>GtkEntry</class>
-	  <name>pv3</name>
-	  <can_focus>True</can_focus>
-	  <signal>
-	    <name>button_press_event</name>
-	    <handler>on_pv_button_press_event</handler>
-	    <last_modification_time>Sun, 15 Jul 2001 21:18:38 GMT</last_modification_time>
-	  </signal>
-	  <editable>False</editable>
-	  <text_visible>True</text_visible>
-	  <text_max_length>0</text_max_length>
-	  <text></text>
-	  <child>
-	    <left_attach>3</left_attach>
-	    <right_attach>4</right_attach>
-	    <top_attach>11</top_attach>
-	    <bottom_attach>12</bottom_attach>
-	    <xpad>3</xpad>
-	    <ypad>3</ypad>
-	    <xexpand>True</xexpand>
-	    <yexpand>True</yexpand>
-	    <xshrink>False</xshrink>
-	    <yshrink>False</yshrink>
-	    <xfill>True</xfill>
-	    <yfill>False</yfill>
-	  </child>
-	</widget>
-
-	<widget>
-	  <class>GtkEntry</class>
-	  <name>pv1</name>
-	  <can_focus>True</can_focus>
-	  <signal>
-	    <name>button_press_event</name>
-	    <handler>on_pv_button_press_event</handler>
-	    <last_modification_time>Sun, 15 Jul 2001 21:18:18 GMT</last_modification_time>
-	  </signal>
-	  <editable>False</editable>
-	  <text_visible>True</text_visible>
-	  <text_max_length>0</text_max_length>
-	  <text></text>
-	  <child>
-	    <left_attach>1</left_attach>
-	    <right_attach>2</right_attach>
-	    <top_attach>7</top_attach>
-	    <bottom_attach>8</bottom_attach>
-	    <xpad>3</xpad>
-	    <ypad>3</ypad>
-	    <xexpand>True</xexpand>
-	    <yexpand>True</yexpand>
-	    <xshrink>False</xshrink>
-	    <yshrink>False</yshrink>
-	    <xfill>True</xfill>
-	    <yfill>False</yfill>
-	  </child>
-	</widget>
-
-	<widget>
-	  <class>GtkEntry</class>
-	  <name>pv8</name>
-	  <can_focus>True</can_focus>
-	  <signal>
-	    <name>button_press_event</name>
-	    <handler>on_pv_button_press_event</handler>
-	    <last_modification_time>Sun, 15 Jul 2001 21:19:30 GMT</last_modification_time>
-	  </signal>
-	  <editable>False</editable>
-	  <text_visible>True</text_visible>
-	  <text_max_length>0</text_max_length>
-	  <text></text>
-	  <child>
-	    <left_attach>7</left_attach>
-	    <right_attach>8</right_attach>
-	    <top_attach>0</top_attach>
-	    <bottom_attach>1</bottom_attach>
-	    <xpad>3</xpad>
-	    <ypad>3</ypad>
-	    <xexpand>True</xexpand>
-	    <yexpand>False</yexpand>
-	    <xshrink>False</xshrink>
-	    <yshrink>False</yshrink>
-	    <xfill>True</xfill>
-	    <yfill>False</yfill>
-	  </child>
-	</widget>
-
-	<widget>
-	  <class>GtkEntry</class>
-	  <name>pv9</name>
-	  <can_focus>True</can_focus>
-	  <signal>
-	    <name>button_press_event</name>
-	    <handler>on_pv_button_press_event</handler>
-	    <last_modification_time>Sun, 15 Jul 2001 21:19:57 GMT</last_modification_time>
-	  </signal>
-	  <editable>False</editable>
-	  <text_visible>True</text_visible>
-	  <text_max_length>0</text_max_length>
-	  <text></text>
-	  <child>
-	    <left_attach>7</left_attach>
-	    <right_attach>8</right_attach>
-	    <top_attach>2</top_attach>
-	    <bottom_attach>3</bottom_attach>
-	    <xpad>3</xpad>
-	    <ypad>3</ypad>
-	    <xexpand>True</xexpand>
-	    <yexpand>False</yexpand>
-	    <xshrink>False</xshrink>
-	    <yshrink>False</yshrink>
-	    <xfill>True</xfill>
-	    <yfill>False</yfill>
-	  </child>
-	</widget>
-
-	<widget>
-	  <class>GtkEntry</class>
-	  <name>pv10</name>
-	  <can_focus>True</can_focus>
-	  <signal>
-	    <name>button_press_event</name>
-	    <handler>on_pv_button_press_event</handler>
-	    <last_modification_time>Sun, 15 Jul 2001 21:20:19 GMT</last_modification_time>
-	  </signal>
-	  <editable>False</editable>
-	  <text_visible>True</text_visible>
-	  <text_max_length>0</text_max_length>
-	  <text></text>
-	  <child>
-	    <left_attach>7</left_attach>
-	    <right_attach>8</right_attach>
-	    <top_attach>4</top_attach>
-	    <bottom_attach>5</bottom_attach>
-	    <xpad>3</xpad>
-	    <ypad>3</ypad>
-	    <xexpand>True</xexpand>
-	    <yexpand>False</yexpand>
-	    <xshrink>False</xshrink>
-	    <yshrink>False</yshrink>
-	    <xfill>True</xfill>
-	    <yfill>False</yfill>
-	  </child>
-	</widget>
-
-	<widget>
-	  <class>GtkEntry</class>
-	  <name>pv11</name>
-	  <can_focus>True</can_focus>
-	  <signal>
-	    <name>button_press_event</name>
-	    <handler>on_pv_button_press_event</handler>
-	    <last_modification_time>Sun, 15 Jul 2001 21:20:28 GMT</last_modification_time>
-	  </signal>
-	  <editable>False</editable>
-	  <text_visible>True</text_visible>
-	  <text_max_length>0</text_max_length>
-	  <text></text>
-	  <child>
-	    <left_attach>7</left_attach>
-	    <right_attach>8</right_attach>
-	    <top_attach>6</top_attach>
-	    <bottom_attach>7</bottom_attach>
-	    <xpad>3</xpad>
-	    <ypad>3</ypad>
-	    <xexpand>True</xexpand>
-	    <yexpand>False</yexpand>
-	    <xshrink>False</xshrink>
-	    <yshrink>False</yshrink>
-	    <xfill>True</xfill>
-	    <yfill>False</yfill>
-	  </child>
-	</widget>
-
-	<widget>
-	  <class>GtkEntry</class>
-	  <name>pv12</name>
-	  <can_focus>True</can_focus>
-	  <signal>
-	    <name>button_press_event</name>
-	    <handler>on_pv_button_press_event</handler>
-	    <last_modification_time>Sun, 15 Jul 2001 21:20:36 GMT</last_modification_time>
-	  </signal>
-	  <editable>False</editable>
-	  <text_visible>True</text_visible>
-	  <text_max_length>0</text_max_length>
-	  <text></text>
-	  <child>
-	    <left_attach>7</left_attach>
-	    <right_attach>8</right_attach>
-	    <top_attach>8</top_attach>
-	    <bottom_attach>9</bottom_attach>
-	    <xpad>3</xpad>
-	    <ypad>3</ypad>
-	    <xexpand>True</xexpand>
-	    <yexpand>False</yexpand>
-	    <xshrink>False</xshrink>
-	    <yshrink>False</yshrink>
-	    <xfill>True</xfill>
-	    <yfill>False</yfill>
-	  </child>
-	</widget>
-
-	<widget>
-	  <class>GtkEntry</class>
-	  <name>pv13</name>
-	  <can_focus>True</can_focus>
-	  <signal>
-	    <name>button_press_event</name>
-	    <handler>on_pv_button_press_event</handler>
-	    <last_modification_time>Sun, 15 Jul 2001 21:20:49 GMT</last_modification_time>
-	  </signal>
-	  <editable>False</editable>
-	  <text_visible>True</text_visible>
-	  <text_max_length>0</text_max_length>
-	  <text></text>
-	  <child>
-	    <left_attach>7</left_attach>
-	    <right_attach>8</right_attach>
-	    <top_attach>10</top_attach>
-	    <bottom_attach>11</bottom_attach>
-	    <xpad>3</xpad>
-	    <ypad>3</ypad>
-	    <xexpand>True</xexpand>
-	    <yexpand>False</yexpand>
-	    <xshrink>False</xshrink>
-	    <yshrink>False</yshrink>
-	    <xfill>True</xfill>
-	    <yfill>False</yfill>
-	  </child>
-	</widget>
-
-	<widget>
-	  <class>GtkEntry</class>
-	  <name>pv14</name>
-	  <can_focus>True</can_focus>
-	  <signal>
-	    <name>button_press_event</name>
-	    <handler>on_pv_button_press_event</handler>
-	    <last_modification_time>Sun, 15 Jul 2001 21:21:00 GMT</last_modification_time>
-	  </signal>
-	  <editable>False</editable>
-	  <text_visible>True</text_visible>
-	  <text_max_length>0</text_max_length>
-	  <text></text>
-	  <child>
-	    <left_attach>7</left_attach>
-	    <right_attach>8</right_attach>
-	    <top_attach>12</top_attach>
-	    <bottom_attach>13</bottom_attach>
-	    <xpad>3</xpad>
-	    <ypad>3</ypad>
-	    <xexpand>True</xexpand>
-	    <yexpand>False</yexpand>
-	    <xshrink>False</xshrink>
-	    <yshrink>False</yshrink>
-	    <xfill>True</xfill>
-	    <yfill>False</yfill>
-	  </child>
-	</widget>
-
-	<widget>
-	  <class>GtkEntry</class>
-	  <name>pv15</name>
-	  <can_focus>True</can_focus>
-	  <signal>
-	    <name>button_press_event</name>
-	    <handler>on_pv_button_press_event</handler>
-	    <last_modification_time>Sun, 15 Jul 2001 21:21:09 GMT</last_modification_time>
-	  </signal>
-	  <editable>False</editable>
-	  <text_visible>True</text_visible>
-	  <text_max_length>0</text_max_length>
-	  <text></text>
-	  <child>
-	    <left_attach>7</left_attach>
-	    <right_attach>8</right_attach>
-	    <top_attach>14</top_attach>
-	    <bottom_attach>15</bottom_attach>
-	    <xpad>3</xpad>
-	    <ypad>3</ypad>
-	    <xexpand>True</xexpand>
-	    <yexpand>False</yexpand>
-	    <xshrink>False</xshrink>
-	    <yshrink>False</yshrink>
-	    <xfill>True</xfill>
-	    <yfill>False</yfill>
-	  </child>
-	</widget>
-
-	<widget>
-	  <class>GtkButton</class>
-	  <name>ped_father_next</name>
-	  <can_focus>True</can_focus>
-	  <signal>
-	    <name>clicked</name>
-	    <handler>on_pv_n0_clicked</handler>
-	    <last_modification_time>Sun, 18 Feb 2001 22:46:13 GMT</last_modification_time>
-	  </signal>
-	  <relief>GTK_RELIEF_NORMAL</relief>
-	  <child>
-	    <left_attach>8</left_attach>
-	    <right_attach>9</right_attach>
-	    <top_attach>3</top_attach>
-	    <bottom_attach>4</bottom_attach>
-	    <xpad>0</xpad>
-	    <ypad>0</ypad>
-	    <xexpand>False</xexpand>
-	    <yexpand>False</yexpand>
-	    <xshrink>False</xshrink>
-	    <yshrink>False</yshrink>
-	    <xfill>False</xfill>
-	    <yfill>False</yfill>
-	  </child>
-
-	  <widget>
-	    <class>GtkArrow</class>
-	    <name>arrow1</name>
-	    <arrow_type>GTK_ARROW_RIGHT</arrow_type>
-	    <shadow_type>GTK_SHADOW_OUT</shadow_type>
-	    <xalign>0.5</xalign>
-	    <yalign>0.5</yalign>
-	    <xpad>0</xpad>
-	    <ypad>0</ypad>
-	  </widget>
-	</widget>
-
-	<widget>
-	  <class>GtkButton</class>
-	  <name>ped_mother_next</name>
-	  <can_focus>True</can_focus>
-	  <signal>
-	    <name>clicked</name>
-	    <handler>on_pv_n1_clicked</handler>
-	    <last_modification_time>Sun, 18 Feb 2001 22:46:26 GMT</last_modification_time>
-	  </signal>
-	  <relief>GTK_RELIEF_NORMAL</relief>
-	  <child>
-	    <left_attach>8</left_attach>
-	    <right_attach>9</right_attach>
-	    <top_attach>11</top_attach>
-	    <bottom_attach>12</bottom_attach>
-	    <xpad>0</xpad>
-	    <ypad>0</ypad>
-	    <xexpand>False</xexpand>
-	    <yexpand>False</yexpand>
-	    <xshrink>False</xshrink>
-	    <yshrink>False</yshrink>
-	    <xfill>False</xfill>
-	    <yfill>False</yfill>
-	  </child>
-
-	  <widget>
-	    <class>GtkArrow</class>
-	    <name>arrow5</name>
-	    <arrow_type>GTK_ARROW_RIGHT</arrow_type>
-	    <shadow_type>GTK_SHADOW_OUT</shadow_type>
-	    <xalign>0.5</xalign>
-	    <yalign>0.5</yalign>
-	    <xpad>0</xpad>
-	    <ypad>0</ypad>
-	  </widget>
-	</widget>
-
-	<widget>
-	  <class>GtkVSeparator</class>
-	  <name>vseparator1</name>
-	  <child>
-	    <left_attach>2</left_attach>
-	    <right_attach>3</right_attach>
-	    <top_attach>4</top_attach>
-	    <bottom_attach>11</bottom_attach>
-	    <xpad>0</xpad>
-	    <ypad>0</ypad>
-	    <xexpand>True</xexpand>
-	    <yexpand>False</yexpand>
-	    <xshrink>False</xshrink>
-	    <yshrink>False</yshrink>
-	    <xfill>True</xfill>
-	    <yfill>True</yfill>
-	  </child>
-	</widget>
-
-	<widget>
-	  <class>GtkVSeparator</class>
-	  <name>vseparator2</name>
-	  <child>
-	    <left_attach>4</left_attach>
-	    <right_attach>5</right_attach>
-	    <top_attach>2</top_attach>
-	    <bottom_attach>5</bottom_attach>
-	    <xpad>0</xpad>
-	    <ypad>0</ypad>
-	    <xexpand>True</xexpand>
-	    <yexpand>False</yexpand>
-	    <xshrink>False</xshrink>
-	    <yshrink>False</yshrink>
-	    <xfill>True</xfill>
-	    <yfill>True</yfill>
-	  </child>
-	</widget>
-
-	<widget>
-	  <class>GtkVSeparator</class>
-	  <name>vseparator3</name>
-	  <child>
-	    <left_attach>4</left_attach>
-	    <right_attach>5</right_attach>
-	    <top_attach>10</top_attach>
-	    <bottom_attach>13</bottom_attach>
-	    <xpad>0</xpad>
-	    <ypad>0</ypad>
-	    <xexpand>False</xexpand>
-	    <yexpand>False</yexpand>
-	    <xshrink>False</xshrink>
-	    <yshrink>False</yshrink>
-	    <xfill>True</xfill>
-	    <yfill>True</yfill>
-	  </child>
-	</widget>
-
-	<widget>
-	  <class>GtkVSeparator</class>
-	  <name>vseparator4</name>
-	  <child>
-	    <left_attach>6</left_attach>
-	    <right_attach>7</right_attach>
-	    <top_attach>1</top_attach>
-	    <bottom_attach>2</bottom_attach>
-	    <xpad>0</xpad>
-	    <ypad>0</ypad>
-	    <xexpand>False</xexpand>
-	    <yexpand>False</yexpand>
-	    <xshrink>False</xshrink>
-	    <yshrink>False</yshrink>
-	    <xfill>True</xfill>
-	    <yfill>True</yfill>
-	  </child>
-	</widget>
-
-	<widget>
-	  <class>GtkVSeparator</class>
-	  <name>vseparator5</name>
-	  <child>
-	    <left_attach>6</left_attach>
-	    <right_attach>7</right_attach>
-	    <top_attach>5</top_attach>
-	    <bottom_attach>6</bottom_attach>
-	    <xpad>0</xpad>
-	    <ypad>0</ypad>
-	    <xexpand>False</xexpand>
-	    <yexpand>False</yexpand>
-	    <xshrink>False</xshrink>
-	    <yshrink>False</yshrink>
-	    <xfill>True</xfill>
-	    <yfill>True</yfill>
-	  </child>
-	</widget>
-
-	<widget>
-	  <class>GtkVSeparator</class>
-	  <name>vseparator6</name>
-	  <child>
-	    <left_attach>6</left_attach>
-	    <right_attach>7</right_attach>
-	    <top_attach>9</top_attach>
-	    <bottom_attach>10</bottom_attach>
-	    <xpad>0</xpad>
-	    <ypad>0</ypad>
-	    <xexpand>False</xexpand>
-	    <yexpand>False</yexpand>
-	    <xshrink>False</xshrink>
-	    <yshrink>False</yshrink>
-	    <xfill>True</xfill>
-	    <yfill>True</yfill>
-	  </child>
-	</widget>
-
-	<widget>
-	  <class>GtkVSeparator</class>
-	  <name>vseparator7</name>
-	  <child>
-	    <left_attach>6</left_attach>
-	    <right_attach>7</right_attach>
-	    <top_attach>13</top_attach>
-	    <bottom_attach>14</bottom_attach>
-	    <xpad>0</xpad>
-	    <ypad>0</ypad>
-	    <xexpand>False</xexpand>
-	    <yexpand>False</yexpand>
-	    <xshrink>False</xshrink>
-	    <yshrink>False</yshrink>
-	    <xfill>True</xfill>
-	    <yfill>True</yfill>
-	  </child>
-	</widget>
-
-	<widget>
-	  <class>GtkButton</class>
-	  <name>child_left</name>
-	  <can_focus>True</can_focus>
-	  <signal>
-	    <name>clicked</name>
-	    <handler>on_arrow_left_clicked</handler>
-	    <last_modification_time>Thu, 22 Feb 2001 15:29:00 GMT</last_modification_time>
-	  </signal>
-	  <relief>GTK_RELIEF_NORMAL</relief>
-	  <child>
-	    <left_attach>0</left_attach>
-	    <right_attach>1</right_attach>
-	    <top_attach>7</top_attach>
-	    <bottom_attach>8</bottom_attach>
-	    <xpad>0</xpad>
-	    <ypad>0</ypad>
-	    <xexpand>False</xexpand>
-	    <yexpand>False</yexpand>
-	    <xshrink>False</xshrink>
-	    <yshrink>False</yshrink>
-	    <xfill>False</xfill>
-	    <yfill>False</yfill>
-	  </child>
-
-	  <widget>
-	    <class>GtkArrow</class>
-	    <name>arrow11</name>
-	    <arrow_type>GTK_ARROW_LEFT</arrow_type>
-	    <shadow_type>GTK_SHADOW_OUT</shadow_type>
-	    <xalign>0.5</xalign>
-	    <yalign>0.5</yalign>
-	    <xpad>0</xpad>
-	    <ypad>0</ypad>
-	  </widget>
+	  <anti_aliased>False</anti_aliased>
+	  <scroll_x1>0</scroll_x1>
+	  <scroll_y1>0</scroll_y1>
+	  <scroll_x2>100</scroll_x2>
+	  <scroll_y2>100</scroll_y2>
+	  <pixels_per_unit>1</pixels_per_unit>
 	</widget>
       </widget>
 
       <widget>
 	<class>GtkLabel</class>
 	<child_name>Notebook:tab</child_name>
-	<name>label3</name>
-	<label>Pedigree</label>
+	<name>label237</name>
+	<label>Pedegree</label>
 	<justify>GTK_JUSTIFY_CENTER</justify>
 	<wrap>False</wrap>
 	<xalign>0.5</xalign>
@@ -3012,55 +2355,6 @@
 	<xpad>0</xpad>
 	<ypad>0</ypad>
       </widget>
-
-      <widget>
-	<class>GtkScrolledWindow</class>
-	<name>scrolledwindow28</name>
-	<hscrollbar_policy>GTK_POLICY_AUTOMATIC</hscrollbar_policy>
-	<vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
-	<hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
-	<vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
-
-	<widget>
-	  <class>GnomeCanvas</class>
-	  <name>canvas1</name>
-	  <can_focus>True</can_focus>
-	  <signal>
-	    <name>check_resize</name>
-	    <handler>on_canvas1_check_resize</handler>
-	    <last_modification_time>Sat, 25 Aug 2001 22:28:28 GMT</last_modification_time>
-	  </signal>
-	  <signal>
-	    <name>realize</name>
-	    <handler>on_canvas1_realize</handler>
-	    <last_modification_time>Sat, 25 Aug 2001 22:28:36 GMT</last_modification_time>
-	  </signal>
-	  <signal>
-	    <name>size_request</name>
-	    <handler>on_canvas1_size_request</handler>
-	    <last_modification_time>Sat, 25 Aug 2001 22:31:38 GMT</last_modification_time>
-	  </signal>
-	  <anti_aliased>False</anti_aliased>
-	  <scroll_x1>0</scroll_x1>
-	  <scroll_y1>0</scroll_y1>
-	  <scroll_x2>100</scroll_x2>
-	  <scroll_y2>100</scroll_y2>
-	  <pixels_per_unit>1</pixels_per_unit>
-	</widget>
-      </widget>
-
-      <widget>
-	<class>GtkLabel</class>
-	<child_name>Notebook:tab</child_name>
-	<name>label237</name>
-	<label>Experimental</label>
-	<justify>GTK_JUSTIFY_CENTER</justify>
-	<wrap>False</wrap>
-	<xalign>0.5</xalign>
-	<yalign>0.5</yalign>
-	<xpad>0</xpad>
-	<ypad>0</ypad>
-      </widget>
     </widget>
   </widget>
 
diff --git a/gramps/src/gramps_main.py b/gramps/src/gramps_main.py
index d180555a3..f7bf8370b 100755
--- a/gramps/src/gramps_main.py
+++ b/gramps/src/gramps_main.py
@@ -112,7 +112,7 @@ family_window = None
 nameArrow     = None
 deathArrow    = None
 dateArrow     = None
-pv            = {}
+canvas        = None
 sort_column   = 5
 sort_direct   = SORT_ASCENDING
 DataFilter    = Filter.Filter("")
@@ -134,7 +134,8 @@ GIVEN       = "g"
 SURNAME     = "s"
 RELTYPE     = "d"
 PAD         = 3
-CANVASPAD   = 15
+CANVASPAD   = 20
+INDEX       = "i"
 
 #-------------------------------------------------------------------------
 #
@@ -785,7 +786,7 @@ def full_update():
     load_family()
     load_sources()
     load_places()
-    load_tree()
+    load_canvas()
 
 #-------------------------------------------------------------------------
 #
@@ -802,9 +803,9 @@ def update_display(changed):
     elif page == 1:
         load_family()
     elif page == 2:
-        load_sources()
+        load_canvas()
     elif page == 3:
-        load_tree()
+        load_sources()
     else:
         load_places()
 
@@ -817,7 +818,7 @@ def load_sources():
     source_list.clear()
     source_list.freeze()
 
-    current_row = source_list.get_data("i")
+    current_row = source_list.get_data(INDEX)
     if current_row == None:
         current_row = -1
 
@@ -833,7 +834,7 @@ def load_sources():
         source_list.select_row(current_row,0)
         source_list.moveto(current_row)
 
-    source_list.set_data("i",current_row)
+    source_list.set_data(INDEX,current_row)
     source_list.thaw()
 
 #-------------------------------------------------------------------------
@@ -843,7 +844,7 @@ def load_sources():
 #-------------------------------------------------------------------------
 def on_src_list_button_press_event(obj,event):
     if event.button == 1 and event.type == GDK._2BUTTON_PRESS:
-        index = obj.get_data("i")
+        index = obj.get_data(INDEX)
         if index >= 0:
             source = obj.get_row_data(index)
             EditSource.EditSource(source,database,update_after_edit)
@@ -855,7 +856,7 @@ def on_src_list_button_press_event(obj,event):
 #-------------------------------------------------------------------------
 def on_place_list_button_press_event(obj,event):
     if event.button == 1 and event.type == GDK._2BUTTON_PRESS:
-        index = obj.get_data("i")
+        index = obj.get_data(INDEX)
         if index >= 0:
             place = obj.get_row_data(index)
             EditPlace.EditPlace(place,database,update_after_edit)
@@ -866,7 +867,7 @@ def on_place_list_button_press_event(obj,event):
 #
 #-------------------------------------------------------------------------
 def on_list_select_row(obj,a,b,c):
-    obj.set_data("i",a)
+    obj.set_data(INDEX,a)
 
 #-------------------------------------------------------------------------
 #
@@ -901,7 +902,7 @@ def on_delete_place_clicked(obj):
     global pevent
     global fevent
     
-    index = obj.get_data("i")
+    index = obj.get_data(INDEX)
     if index == -1:
         return
 
@@ -984,7 +985,7 @@ def on_force_delete_clicked(obj):
 #
 #-------------------------------------------------------------------------
 def on_edit_source_clicked(obj):
-    index = obj.get_data("i")
+    index = obj.get_data(INDEX)
     if index != -1:
         source = obj.get_row_data(index)
         EditSource.EditSource(source,database,update_after_edit)
@@ -995,7 +996,7 @@ def on_edit_source_clicked(obj):
 #
 #-------------------------------------------------------------------------
 def on_edit_place_clicked(obj):
-    index = obj.get_data("i")
+    index = obj.get_data(INDEX)
     if index != -1:
         place = obj.get_row_data(index)
         EditPlace.EditPlace(place,database,update_after_edit)
@@ -1830,7 +1831,7 @@ def on_notebook1_switch_page(obj,junk,page):
     elif page == 1:
         load_family()
     elif page == 2:
-        load_tree()
+        load_canvas()
     elif page == 3:
         load_sources()
     elif page == 4:
@@ -1845,7 +1846,7 @@ def load_places():
     place_list.freeze()
     place_list.clear()
 
-    current_row = place_list.get_data("i")
+    current_row = place_list.get_data(INDEX)
     if current_row == None:
         current_row = -1
 
@@ -1872,73 +1873,9 @@ def load_places():
         place_list.select_row(current_row,0)
         place_list.moveto(current_row)
 
-    place_list.set_data("i",current_row)
+    place_list.set_data(INDEX,current_row)
     place_list.thaw()
 
-#-------------------------------------------------------------------------
-#
-#
-#
-#-------------------------------------------------------------------------
-def on_pv_button_press_event(obj,event):
-    if event.button == 1 and event.type == GDK._2BUTTON_PRESS:
-        load_person(obj.get_data("p"))
-
-#-------------------------------------------------------------------------
-#
-#
-#
-#-------------------------------------------------------------------------
-def on_pv_n0_clicked(obj):
-    family = active_person.getMainFamily()
-    if family:
-        father = family.getFather()
-        if father:
-            change_active_person(father)
-            load_tree()
-
-#-------------------------------------------------------------------------
-#
-#
-#
-#-------------------------------------------------------------------------
-def on_pv_n1_clicked(obj):
-    family = active_person.getMainFamily()
-    if family:
-        mother = family.getMother()
-        if mother:
-            change_active_person(mother)
-            load_tree()
-
-#-------------------------------------------------------------------------
-#
-#
-#
-#-------------------------------------------------------------------------
-def childmenu (obj,event):
-    if not active_person:
-        return 1
-    
-    if event.type == GDK.BUTTON_PRESS and event.button == 3:
-        myMenu = GtkMenu()
-        for family in active_person.getFamilyList():
-            for child in family.getChildList():
-                menuitem = GtkMenuItem(Config.nameof(child))
-                myMenu.append(menuitem)
-                menuitem.set_data("person",child)
-                menuitem.connect("activate",on_childmenu_changed)
-                menuitem.show()
-        myMenu.popup(None,None,None,0,0)
-    elif event.type == GDK.ENTER_NOTIFY:
-        statusbar.set_status(_("Right clicking will allow you to choose a child"))
-        style = gtop.get_widget("canvas1")['style']
-        obj.set(fill_color=style.fg[STATE_SELECTED])
-    elif event.type == GDK.LEAVE_NOTIFY:
-        style = gtop.get_widget("canvas1")['style']
-        obj.set(fill_color=style.black)
-        modify_statusbar()
-    return 1
-
 #-------------------------------------------------------------------------
 #
 #
@@ -1966,7 +1903,7 @@ def on_childmenu_changed(obj):
     person = obj.get_data("person")
     if person:
         change_active_person(person)
-        load_tree()
+        load_canvas()
     return 1
     
 #-------------------------------------------------------------------------
@@ -2325,20 +2262,21 @@ def find_tree(person,index,depth,list):
 canvas_items = []
 
 def load_canvas():
-    global canvas_items
-
+    global canvas_items 
+    
     if active_person == None:
         return
-    
+
     h = 0
     w = 0
 
-    canvas = gtop.get_widget("canvas1")
     cx1,cy1,cx2,cy2 = canvas.get_allocation()
+    canvas.set_scroll_region(cx1,cy1,cx2,cy2)
     root = canvas.root()
 
-    cw = (cx2-cx1-(2*CANVASPAD))
-
+    for i in canvas_items:
+        i.destroy()
+        
     style = canvas['style']
     font = style.font
 
@@ -2352,6 +2290,9 @@ def load_canvas():
             w = max(w,font.width("d. %s" % t.getDeath().getDate())+2*PAD)
             w = max(w,font.width("b. %s" % t.getBirth().getDate())+2*PAD)
 
+    cpad = max(h+4,CANVASPAD)
+    cw = (cx2-cx1-(2*cpad))
+
     if 5*w < cw and 24*h < cy2:
         gen = 31
         xdiv = 5.0
@@ -2364,9 +2305,8 @@ def load_canvas():
 
     for c in canvas_items:
         c.destroy()
-    canvas.set_scroll_region(cx1,cy1,cx2,cy2)
 
-    xpts = build_x_coords(cw/xdiv)
+    xpts = build_x_coords(cw/xdiv,cpad)
     ypts = build_y_coords(cy2/32.0)
 
     childcnt = 0
@@ -2374,21 +2314,26 @@ def load_canvas():
         for child in family.getChildList():
             childcnt = 1
             break
-            
+
+    a = GtkArrow(at=GTK.ARROW_LEFT)
+    cnv_button = GtkButton()
+    cnv_button.add(a)
+    a.show()
+    cnv_button.connect("clicked",on_arrow_left_clicked)
+        
     if childcnt != 0:
-        ypos = ypts[0]+h/2.0
-        item = root.add("line",
-                        points=[CANVASPAD,ypos,CANVASPAD/4.0,ypos],
-                        fill_color_gdk=style.black,
-                        width_pixels=3,
-                        arrow_shape_a=6,
-                        arrow_shape_b=6,
-                        arrow_shape_c=4,
-                        last_arrowhead=1
-                        )
-        item.connect('event',childmenu)
-        canvas_items = [item]
+        cnv_button.show()
+        item = root.add("widget",
+                        widget=cnv_button,
+                        x=cx1,
+                        y=ypts[0]+(h/2.0), #cy2/2.0, #+(h+PAD)/2.0,
+                        height=h,
+                        width=h,
+                        size_pixels=1,
+                        anchor=GTK.ANCHOR_WEST)
+        canvas_items = [item, cnv_button, a]
     else:
+        cnv_button.hide()
         canvas_items = []
 
     for i in range(gen):
@@ -2425,10 +2370,10 @@ def draw_canvas_line(root,x1,y1,x2,y2,h,w,data,style):
 #
 #
 #-------------------------------------------------------------------------
-def build_x_coords(xincr):
+def build_x_coords(xincr,cpad):
 
-    return [CANVASPAD] + [xincr+CANVASPAD]*2 + [xincr*2+CANVASPAD]*4 +\
-           [xincr*3+CANVASPAD]*8 + [xincr*4+CANVASPAD]*16
+    return [cpad] + [xincr+cpad]*2 + [xincr*2+cpad]*4 +\
+           [xincr*3+cpad]*8 + [xincr*4+cpad]*16
 
 #-------------------------------------------------------------------------
 #
@@ -2489,8 +2434,13 @@ def add_box(root,x,y,bwidth,bheight,person,style):
 #-------------------------------------------------------------------------
 def box_event(obj,event):
     if event.type == GDK._2BUTTON_PRESS:
-        if event.button == 1 and event.type == GDK._2BUTTON_PRESS:
-            load_person(obj.get_data('p'))
+        if event.button == 1:
+            if event.state & GDK.SHIFT_MASK:
+                change_active_person(obj.get_data("p"))
+                load_canvas()
+            else:
+                load_person(obj.get_data('p'))
+            return 1
     elif event.type == GDK.ENTER_NOTIFY:
         canvas = gtop.get_widget("canvas1")
         obj.raise_to_top()
@@ -2517,16 +2467,21 @@ def box_event(obj,event):
                 y=2*h+(h/2))
     elif event.type == GDK.LEAVE_NOTIFY:
         canvas = gtop.get_widget("canvas1")
+        ch = obj.children()
+        length = len(ch)
+        if length <= 3:
+            return 1
         box = obj.children()[1]
         x,y,w,h = box.get_bounds()
         box.set(x1=x,y1=y,x2=w,y2=h/3)
         box2 = obj.children()[0]
         x,y,w,h1 = box2.get_bounds()
         box2.set(x1=x,y1=y,x2=w,y2=(h/3)+PAD)
-        obj.children()[4].destroy()
-        obj.children()[3].destroy()
+        if length > 4:
+            ch[4].destroy()
+        if length > 3:
+            ch[3].destroy()
         canvas.update_now()
-    return 1
         
 #-------------------------------------------------------------------------
 #
@@ -2550,71 +2505,6 @@ def line_event(obj,event):
         obj.set(fill_color_gdk=canvas['style'].black, width_pixels=2)
         modify_statusbar()
 
-#-------------------------------------------------------------------------
-#
-#
-#
-#-------------------------------------------------------------------------
-def load_tree():
-
-    load_canvas()
-    text = {}
-    tip = {}
-    for i in range(1,16):
-        text[i] = ("",None)
-        tip[i] = ""
-
-    load_tree_values(active_person,1,16,text,tip)
-
-    tips = GtkTooltips()
-    for i in range(1,16):
-        pv[i].set_text(text[i][0]) 
-	pv[i].set_position(0)
-        pv[i].set_data("p",text[i][1])
-       
-        if tip[i] != "":
-            tips.set_tip(pv[i],tip[i])
-        else:
-            tips.set_tip(pv[i],None)
-
-    if text[2] == "":
-        gtop.get_widget("ped_father_next").set_sensitive(0)
-    else:
-        gtop.get_widget("ped_father_next").set_sensitive(1)
-
-    if text[3] == "":
-        gtop.get_widget("ped_mother_next").set_sensitive(0)
-    else:
-        gtop.get_widget("ped_mother_next").set_sensitive(1)
-
-#-------------------------------------------------------------------------
-#
-#
-#
-#-------------------------------------------------------------------------
-def load_tree_values(person,index,max,pv_text,tip):
-    if person == None:
-        return
-    msg = Config.nameof(person)
-    
-    bdate = person.getBirth().getDate()
-    ddate = person.getDeath().getDate()
-    if bdate and ddate:
-        text = "%s\nb. %s\nd. %s" % (msg, bdate,ddate)
-    elif bdate and not ddate:
-        text = "%s\nb. %s" % (msg, bdate)
-    elif not bdate and ddate:
-        text = "%s\nb. %s" % (msg, ddate)
-    else:
-        text = msg
-    tip[index] = text
-    pv_text[index] = (msg,person)
-    if 2*index+1 < max:
-        family = person.getMainFamily()
-        if family != None:
-            load_tree_values(family.getFather(),2*index,max,pv_text,tip)
-            load_tree_values(family.getMother(),(2*index)+1,max,pv_text,tip)
-
 #-------------------------------------------------------------------------
 #
 #
@@ -2975,6 +2865,17 @@ def menu_tools(obj,task):
     if active_person:
         task(database,active_person,update_display)
     
+#-------------------------------------------------------------------------
+#
+#
+#
+#-------------------------------------------------------------------------
+def on_main_key_release_event(obj,event):
+    if event.keyval == GDK.Delete:
+        on_delete_person_clicked(obj)
+    elif event.keyval == GDK.Insert:
+        load_new_person(obj)
+    
 #-------------------------------------------------------------------------
 #
 # Main program
@@ -2984,7 +2885,7 @@ def menu_tools(obj,task):
 def main(arg):
     global database, gtop
     global statusbar,notebook
-    global person_list, source_list, place_list,pv
+    global person_list, source_list, place_list, canvas
     global topWindow
     global nameArrow, dateArrow, deathArrow
     
@@ -3005,6 +2906,7 @@ def main(arg):
     statusbar   = gtop.get_widget("statusbar")
     topWindow   = gtop.get_widget("gramps")
     person_list = gtop.get_widget("person_list")
+    canvas      = gtop.get_widget("canvas1")
     source_list = gtop.get_widget("source_list")
     place_list  = gtop.get_widget("place_list")
     filter_list = gtop.get_widget("filter_list")
@@ -3028,9 +2930,6 @@ def main(arg):
     
     person_list.column_titles_active()
 
-    for box in range(1,16):
-        pv[box] = gtop.get_widget("pv%d" % box)
-
     gtop.signal_autoconnect({
         "delete_event"                      : delete_event,
         "destroy_passed_object"             : utils.destroy_passed_object,
@@ -3044,7 +2943,7 @@ def main(arg):
         "on_addperson_clicked"              : load_new_person,
         "on_apply_filter_clicked"           : on_apply_filter_clicked,
         "on_arrow_left_clicked"             : on_arrow_left_clicked,
-        "on_canvas1_size_request"           : on_canvas1_size_request,
+        "on_canvas1_event"                  : on_canvas1_event,
         "on_child_list_button_press_event"  : on_child_list_button_press_event,
         "on_child_list_select_row"          : on_child_list_select_row,
         "on_choose_parents_clicked"         : on_choose_parents_clicked, 
@@ -3079,12 +2978,10 @@ def main(arg):
         "on_person_list_click_column"       : on_person_list_click_column,
         "on_person_list_select_row"         : on_person_list_select_row,
         "on_place_list_button_press_event"  : on_place_list_button_press_event,
+        "on_main_key_release_event"         : on_main_key_release_event,
         "on_place_list_select_row"          : on_list_select_row,
         "on_places_activate"                : on_places_activate,
         "on_preferences_activate"           : on_preferences_activate,
-        "on_pv_button_press_event"          : on_pv_button_press_event,
-        "on_pv_n0_clicked"                  : on_pv_n0_clicked,
-        "on_pv_n1_clicked"                  : on_pv_n1_clicked,
         "on_remove_child_clicked"           : on_remove_child_clicked,
         "on_reports_clicked"                : on_reports_clicked,
         "on_revert_activate"                : on_revert_activate,
@@ -3115,11 +3012,26 @@ def main(arg):
 
 #-------------------------------------------------------------------------
 #
-# Start it all
+#
 #
 #-------------------------------------------------------------------------
-def on_canvas1_size_request(obj,a):
-    load_canvas()
+ox1 = 0
+ox2 = 0
+oy1 = 0
+oy2 = 0
+
+def on_canvas1_event(obj,event):
+    global ox1,ox2,oy1,oy2
+
+    if event.type == GDK.EXPOSE:
+        cx1,cy1,cx2,cy2 = canvas.get_allocation()
+        if ox1 != cx1 or ox2 != cx2 or oy1 != cy1 or oy2 != cy2:
+            ox1 = cx1
+            ox2 = cx2
+            oy1 = cy1
+            oy2 = cy2
+            load_canvas()
+    return 0
 
 #-------------------------------------------------------------------------
 #