Gtk 4.10.4
Call logs for measure and size_allocate functions
** Message: 09:30:48.049: LxFlowBox measure 1 for_size: 1462
LxFlowBox o(1) for_size: 1462
max-min:166
c:max-child-size:208
_count: 2
** Message: 09:30:48.050: LxFlowBox:1 1462 510 510
** Message: 09:30:48.050: LxFlowBox size 1462 510
** Message: 09:30:48.064: LxFlowBox measure 1 for_size: 1454
LxFlowBox o(1) for_size: 1454
max-min:166
c:max-child-size:207
_count: 2
** Message: 09:30:48.064: LxFlowBox:1 1454 508 508
** Message: 09:30:48.064: LxFlowBox size 1454 508
** Message: 09:30:48.081: LxFlowBox measure 1 for_size: 1448
LxFlowBox o(1) for_size: 1448
max-min:166
c:max-child-size:206
_count: 2
** Message: 09:30:48.081: LxFlowBox:1 1448 506 506
** Message: 09:30:48.081: LxFlowBox size 1448 506
** Message: 09:30:48.095: LxFlowBox size 1446 506
** Message: 09:30:48.114: LxFlowBox measure 1 for_size: 1435
LxFlowBox o(1) for_size: 1435
max-min:166
c:max-child-size:205
_count: 2
** Message: 09:30:48.114: LxFlowBox:1 1435 504 504
** Message: 09:30:48.114: LxFlowBox size 1435 504
** Message: 09:30:48.147: LxFlowBox measure 1 for_size: 1421
LxFlowBox o(1) for_size: 1421
max-min:166
c:max-child-size:203
_count: 2
** Message: 09:30:48.148: LxFlowBox:1 1421 500 500
** Message: 09:30:48.148: LxFlowBox size 1421 500
** Message: 09:30:48.164: LxFlowBox measure 1 for_size: 1413
LxFlowBox o(1) for_size: 1413
max-min:166
c:max-child-size:201
_count: 2
** Message: 09:30:48.164: LxFlowBox:1 1413 496 496
** Message: 09:30:48.165: LxFlowBox size 1413 496
** Message: 09:30:48.179: LxFlowBox size 1405 494
** Message: 09:30:48.195: LxFlowBox measure 1 for_size: 1394
LxFlowBox o(1) for_size: 1394
max-min:166
c:max-child-size:199
_count: 2
** Message: 09:30:48.195: LxFlowBox:1 1394 492 492
** Message: 09:30:48.195: LxFlowBox size 1394 492
** Message: 09:30:48.212: LxFlowBox measure 1 for_size: 1391
LxFlowBox o(1) for_size: 1391
max-min:166
c:max-child-size:198
_count: 2
** Message: 09:30:48.213: LxFlowBox:1 1391 490 490
** Message: 09:30:48.213: LxFlowBox size 1391 490
** Message: 09:30:48.247: LxFlowBox measure 1 for_size: 1371
LxFlowBox o(1) for_size: 1371
max-min:166
c:max-child-size:195
_count: 2
** Message: 09:30:48.248: LxFlowBox:1 1371 484 484
** Message: 09:30:48.248: LxFlowBox size 1371 484
** Message: 09:30:48.265: LxFlowBox measure 1 for_size: 1365
LxFlowBox o(1) for_size: 1365
max-min:166
c:max-child-size:195
_count: 2
** Message: 09:30:48.265: LxFlowBox:1 1365 484 484
** Message: 09:30:48.265: LxFlowBox size 1365 484
** Message: 09:30:48.278: LxFlowBox measure 1 for_size: 1364
LxFlowBox o(1) for_size: 1364
max-min:166
c:max-child-size:194
_count: 2
** Message: 09:30:48.278: LxFlowBox:1 1364 482 482
** Message: 09:30:48.278: LxFlowBox size 1364 482
** Message: 09:30:48.295: LxFlowBox measure 1 for_size: 1358
LxFlowBox o(1) for_size: 1358
max-min:166
c:max-child-size:194
_count: 2
** Message: 09:30:48.295: LxFlowBox:1 1358 482 482
** Message: 09:30:48.295: LxFlowBox size 1358 482
** Message: 09:30:48.311: LxFlowBox measure 1 for_size: 1357
LxFlowBox o(1) for_size: 1357
max-min:166
c:max-child-size:193
_count: 2
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
** Message: 09:30:48.311: LxFlowBox:1 1357 480 480
** Message: 09:30:48.311: LxFlowBox size 1357 480
** Message: 09:30:48.346: LxFlowBox size 1351 480
** Message: 09:30:48.363: LxFlowBox size 1346 478
** Message: 09:30:48.378: LxFlowBox size 1345 478
** Message: 09:30:48.395: LxFlowBox size 1343 476
** Message: 09:30:48.412: LxFlowBox size 1338 476
** Message: 09:30:48.448: LxFlowBox size 1331 474
** Message: 09:30:48.529: LxFlowBox size 1324 472
** Message: 09:30:48.547: LxFlowBox size 1323 472
** Message: 09:30:48.562: LxFlowBox size 1318 472
** Message: 09:30:48.579: LxFlowBox size 1316 470
** Message: 09:30:48.612: LxFlowBox size 1309 468
** Message: 09:30:48.629: LxFlowBox size 1303 466
** Message: 09:30:48.645: LxFlowBox size 1297 464
** Message: 09:30:48.679: LxFlowBox size 1291 462
** Message: 09:30:48.713: LxFlowBox size 1290 462
** Message: 09:30:48.760: LxFlowBox size 1288 462
** Message: 09:30:48.780: LxFlowBox size 1284 460
** Message: 09:30:48.796: LxFlowBox size 1282 460
** Message: 09:30:48.832: LxFlowBox size 1269 460
** Message: 09:30:48.849: LxFlowBox size 1262 460
** Message: 09:30:48.881: LxFlowBox size 1255 460
** Message: 09:30:48.914: LxFlowBox size 1248 460
** Message: 09:30:48.929: LxFlowBox size 1244 460
** Message: 09:30:48.963: LxFlowBox size 1237 460
** Message: 09:30:49.049: LxFlowBox size 1229 460
** Message: 09:30:49.065: LxFlowBox size 1224 460
** Message: 09:30:49.096: LxFlowBox size 1222 460
** Message: 09:30:49.280: LxFlowBox size 1217 460
** Message: 09:30:49.361: LxFlowBox size 1216 460
log into two parts,
- The previous part is correct and ideal, calling measure and size_allocate respectively. This will give the correct result
- The latter part, is wrong, only size_allocate is called, which brings wrong results.
You can notice that in the last scene, I moved the mouse to the control, which caused it to execute measure, which caused it to refresh
I’m sure it’s a cache issue.
I modified the source code (gtk/sizerequestcache.c:_gtk_size_request_cache_lookup) and added the judgment of GtkSizeRequestMode.
Everything works fine now.
I noticed that GtkSizeRequestMode appears in the SizeRequestCache structure. But it is not used in the function. Why
What is the solution to the problem?