@@ -434,7 +434,7 @@ GridForgetRemoveCommand(Handle self, Bool forget, PList in, PList out)
434434 }
435435 Unlink (slavePtr );
436436 CWidget (slavePtr -> window )-> hide (slavePtr -> window );
437- CWidget (slave )-> geometry (self , gtGrowMode );
437+ CWidget (slave )-> set_geometry (self , gtGrowMode );
438438 }
439439
440440 return true;
@@ -1137,7 +1137,10 @@ ArrangeGrid(Gridder *masterPtr)
11371137 (width != sz .x || height != sz .y ) &&
11381138 !(masterPtr -> flags & DONT_PROPAGATE )
11391139 ) {
1140- ArrangeGrid (masterPtr );
1140+ Point p = {width ,height };
1141+ CWidget (masterPtr -> window )-> set_geomSize (masterPtr -> window ,p );
1142+ //if ( width > 1 && height > 1 )
1143+ // ArrangeGrid(masterPtr);
11411144 masterPtr -> abortPtr = NULL ;
11421145 return ;
11431146 }
@@ -2060,7 +2063,7 @@ ConfigureSlaves(Handle self, SV* window, HV *profile)
20602063 Gridder * masterPtr ;
20612064 Gridder * slavePtr ;
20622065 Handle slave , parent ;
2063- int i , j ;
2066+ int i ;
20642067 int width ;
20652068 int defaultColumn = 0 ; /* default column number */
20662069 int defaultColumnSpan = 1 ; /* default number of columns */
@@ -2079,13 +2082,13 @@ ConfigureSlaves(Handle self, SV* window, HV *profile)
20792082 ))
20802083 croak ("%s: window is neither an object nor an array of objects" , METHOD );
20812084
2082- if (SvTYPE (SvRV (window )) == SVt_PVAV ) {
2085+ if (SvROK ( window ) && ( SvTYPE (SvRV (window )) == SVt_PVAV ) ) {
20832086 if ( !( slaves = (SV * * ) prima_read_array (window , METHOD , 'H' , 1 , 0 , 0 , & n_slaves , NULL )))
20842087 croak ("%s: cannot read array of windows, or the array is empty" , METHOD );
20852088 } else {
20862089 slaves = malloc (sizeof (SV * ));
2087- * slaves = window ;
20882090 n_slaves = 1 ;
2091+ * slaves = window ;
20892092 }
20902093
20912094 firstStr = "" ;
@@ -2117,7 +2120,7 @@ ConfigureSlaves(Handle self, SV* window, HV *profile)
21172120 */
21182121
21192122 masterPtr = NULL ;
2120- for (j = 0 ; j < n_slaves ; j ++ ) {
2123+ for (i = 0 ; i < n_slaves ; i ++ ) {
21212124 if ( !SvROK (slaves [i ])) {
21222125 firstStr = SvPV ( slaves [i ], len );
21232126
@@ -2137,9 +2140,9 @@ ConfigureSlaves(Handle self, SV* window, HV *profile)
21372140 continue ;
21382141 }
21392142
2140- for (defaultColumnSpan = 1 ; j + defaultColumnSpan < n_slaves ; defaultColumnSpan ++ ) {
2143+ for (defaultColumnSpan = 1 ; i + defaultColumnSpan < n_slaves ; defaultColumnSpan ++ ) {
21412144 STRLEN l = 1 ;
2142- char * string = SvROK ( slaves [j + defaultColumnSpan ] ) ? "" : SvPV (slaves [j + defaultColumnSpan ], l );
2145+ char * string = SvROK ( slaves [i + defaultColumnSpan ] ) ? "" : SvPV (slaves [i + defaultColumnSpan ], l );
21432146 if ( l != 1 || * string != REL_HORIZ ) {
21442147 break ;
21452148 }
@@ -2230,21 +2233,21 @@ ConfigureSlaves(Handle self, SV* window, HV *profile)
22302233 if (masterPtr -> abortPtr != NULL ) {
22312234 * masterPtr -> abortPtr = 1 ;
22322235 }
2233- CWidget (slave )-> geometry = gtGrid ;
2236+ PWidget (slave )-> geometry = gtGrid ;
22342237 ArrangeGrid (masterPtr );
22352238 }
22362239
22372240 /* Now look for all the "^"'s. */
22382241
22392242 lastWindow = -1 ;
22402243 numSkip = 0 ;
2241- for (j = 0 ; j < n_slaves ; j ++ ) {
2244+ for (i = 0 ; i < n_slaves ; i ++ ) {
22422245 struct Gridder * otherPtr ;
22432246 int match ; /* found a match for the ^ */
22442247 int lastRow , lastColumn ; /* implied end of table */
22452248
22462249 len = 0 ;
2247- firstStr = SvROK (slaves [j ]) ? "" : SvPV ( slaves [j ], len );
2250+ firstStr = SvROK (slaves [i ]) ? "" : SvPV ( slaves [i ], len );
22482251
22492252 if ( * firstStr == REL_SKIP ) {
22502253 numSkip ++ ;
@@ -2253,7 +2256,7 @@ ConfigureSlaves(Handle self, SV* window, HV *profile)
22532256 } else {
22542257 if ( !only_xes (firstStr )) {
22552258 numSkip = 0 ;
2256- lastWindow = get_slave (self , slaves [j ]);
2259+ lastWindow = get_slave (self , slaves [i ]);
22572260 }
22582261 continue ;
22592262 }
@@ -2263,9 +2266,9 @@ ConfigureSlaves(Handle self, SV* window, HV *profile)
22632266 }
22642267
22652268 /* Count the number of consecutive ^'s starting from this position */
2266- for (width = 1 ; width + j < n_slaves ; width ++ ) {
2269+ for (width = 1 ; width + i < n_slaves ; width ++ ) {
22672270 len = 0 ;
2268- firstStr = SvROK (slaves [j + width ]) ? "" : SvPV ( slaves [j + width ], len );
2271+ firstStr = SvROK (slaves [i + width ]) ? "" : SvPV ( slaves [i + width ], len );
22692272 if (len != 1 || * firstStr != REL_VERT )
22702273 break ;
22712274 }
@@ -2298,7 +2301,7 @@ ConfigureSlaves(Handle self, SV* window, HV *profile)
22982301 if (slavePtr -> numCols <= width ) {
22992302 slavePtr -> numRows ++ ;
23002303 match ++ ;
2301- j += slavePtr -> numCols - 1 ;
2304+ i += slavePtr -> numCols - 1 ;
23022305 lastWindow = slavePtr -> window ;
23032306 numSkip = 0 ;
23042307 break ;
@@ -2465,7 +2468,7 @@ Widget_grid_destroy( Handle self)
24652468static HV *
24662469opt2hv ( PList in , int start )
24672470{
2468- HV * profile = newHV ();
2471+ HV * profile = prima_hash_create ();
24692472 for ( ; start < in -> count ; start += 2 ) {
24702473 STRLEN l ;
24712474 char * key = SvPV ((SV * ) in -> items [start ], l );
@@ -2507,9 +2510,9 @@ XS( Widget_grid_FROMPERL)
25072510 ) {
25082511 ok = GridRowColumnConfigureCommand (self , (* selector == 'c' ) ? COLUMN : ROW , & in , & out );
25092512 } else if ( strcmp (selector , "configure" ) == 0 ) {
2510- HV * profile = opt2hv (& in , 3 );
2511- ConfigureSlaves (self , (SV * )in .items [2 ], profile );
2512- sv_free (( SV * ) profile );
2513+ HV * profile = opt2hv (& in , 1 );
2514+ ConfigureSlaves (self , (SV * )in .items [0 ], profile );
2515+ hash_destroy ( profile , false );
25132516 ok = true;
25142517 } else if (
25152518 (strcmp (selector , "forget" ) == 0 ) ||
0 commit comments