Skip to content

Commit 0ec9e19

Browse files
committed
first tested working 'grid configure'
1 parent 837b9ca commit 0ec9e19

File tree

2 files changed

+23
-19
lines changed

2 files changed

+23
-19
lines changed

class/Widget/events.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,7 @@ SIZE_EVENT:;
380380
}
381381
Widget_pack_slaves( self);
382382
Widget_place_slaves( self) ;
383+
Widget_grid_slaves( self) ;
383384
}
384385

385386
static Bool

class/Widget/grid.c

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -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)
24652468
static HV*
24662469
opt2hv( 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

Comments
 (0)