-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathoverview.html
executable file
·2561 lines (2286 loc) · 122 KB
/
overview.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" />
<style type="text/css">
dt { font-weight: bold; }
h3 { text-decoration: underline; }
dd { margin-top: 10px; margin-bottom: 10px; }
dd p { margin-top: 0px; }
dd div { margin: 10px 0px; }
</style>
<title>JWt 4.11.1</title>
</head>
<body>
This is the reference documentation
for <a href="https://www.webtoolkit.eu/jwt">JWt</a>.
<h1>Release notes</h1>
This page lists important notes on migrating existing applications to
newer version of JWt. It lists changes in the library that may break
the way you build JWt, the way you configure JWt or the JWt API and
behaviour. It also indicates the main changes from version to verison.
<h2>Release 4.11.2 (January 16, 2025)</h2>
<p>
JWt 4.11.2 is a patch release that addresses the following issues:
</p>
<ul>
<li>
<a href="https://redmine.emweb.be/issues/12935" target="_blank">Issue #12935</a>:
resize handles in layouts now have a fixed height or width instead of them scaling with the spacing of the layout.
</li>
<li>
<a href="https://redmine.emweb.be/issues/12866" target="_blank">Issue #12866</a>:
added the <a href="eu/webtoolkit/jwt/Configuration.html#setDelayLoadAtBoot(boolean)" target="_blank">setDelayAtBoot()</a> option which can be changed in the <code>Configuration</code>. This option
allows developers to choose whether the loading of the application at boot should be delayed or not. Instead of
immediately calling the loading method, a small delay is introduced to allow additional JavaScript to be executed before
loading. By default this option is set to true, which keeps the delay. This delay can cause the loading of the
application to take a long time in some very specific case. Setting this option to false could however impact any
JavaScript code added at boot time.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13063" target="_blank">Issue #13063</a>:
fixed a bug where setting the HTML tag name of a
<a href="eu/webtoolkit/jwt/WWebWidget.html" target="_blank">WWebWidget</a> could lead to a segmentation fault for some tag names.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13366" target="_blank">Issue #13366</a>:
ensure that when the application's working directory and the docroot are not the same directory, the image rendering fallback
will attempt to resolve the image relative to both locations.
This is so that clients that do not have JavaScript enabled, are still able to see the same images as JavaScript-enabled clients.
</li>
<li>
<a href="https://redmine.emweb.be/issues/12860" target="_blank">Issue #12860</a>:
fixed a bug where a
<a href="eu/webtoolkit/jwt/WDialog.html" target="_blank">WDialog</a> would not be centered if
<a href="eu/webtoolkit/jwt/WDialog.html#exec()" target="_blank">WDialog#exec()</a> was called after the <code>WDialog</code> was loaded.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/13082" target="_blank">Issue #13082</a>:
fixed styling of elements in layout not being updated in some cases if the change happened while the layout was hidden.
</li>
<li>
<a href="https://redmine.emweb.be/issues/12951" target="_blank">Issue #12951</a>:
fixed a bug where a layout in a
<a href="eu/webtoolkit/jwt/WPanel.html" target="_blank">WPanel</a> may not work properly during and after some animations.
</li>
<li>
<a href="https://redmine.emweb.be/issues/12934" target="_blank">Issue #12934</a>:
fixed a bug in layouts using JavaScript implementation where a widget size could be set higher than it's maximum size, leading to additional space after that widget.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13300" target="_blank">Issue #13300</a>:
fixed a missing fallback in JWt's main JavaScript, when handling browser history navigation (using the back and forward buttons).
In case of rewritten browser history, the retrieval would fail, and encounter an <code>undefined</code> state. Throwing a JavaScript error. This error should be guarded against,
and the fallback should always kick in.
</li>
</ul>
<p>
JWt 4.11.2 also comes with the following improvements:
</p>
<ul>
<li>
<a href="https://redmine.emweb.be/issues/13187" target="_blank">Issue #13187</a>:
add the possibility to configure headers that are sent in every reply. This can be defined in
the configuration using the <a href="eu/webtoolkit/jwt/Configuration.html#setHttpHeaders(java.util.list)" target="_blank">Configuration#setHttpHeaders()</a> method.
It is now also possible to configure JWt to use nonces for script by setting the <a href="eu/webtoolkit/jwt/Configuration.html#setUseScriptNonce(boolean)" target="_blank">Configuration#setUseScriptNonce()</a> to <code>true</code>,
to help protect against XSS attack. If you need to serve a script in a
<a href="eu/webtoolkit/jwt/WResource.html" target="_blank">WResource</a>, the nonce is available through the
response parameter of the
<a href="eu/webtoolkit/jwt/WResource.html##handleRequest(eu.webtoolkit.jwt.servlet.WebRequest,eu.webtoolkit.jwt.servlet.WebResponse)" target="_blank">WResource#handleRequest()</a> function by using
<a href="eu/webtoolkit/jwt/servlet/WebResponse.html#getNonce()" target="_blank">WebResponse#getNonce()</a>.
The nonce is facilitated through the <h href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP" target="_blank">CSP (Content Security Policy) header</a>.
Enabling the nonce will serve CSP headers in your responses. A minimal (fairly nonrestrictive) configuration is taken by default, namely:
<code>Content-Security-Policy: script-src 'nonce-{randomNonce}' 'strict-dynamic' 'unsafe-eval'</code>
This CSP header can be configured in the Configuration under <code>Configuration#setHttpHeaders()</code> as well. If the nonce is enabled, only MORE restrictive CSP headers will
be allowed by the browser.
</li>
<li>
<a href="https://redmine.emweb.be/issues/12945" target="_blank">Issue #12945</a>:
allow to use icons from
<a href="http://fontawesome.io" target="_blank">Font Awesome</a> in
<a href="eu/webtoolkit/jwt/WIconPair.html" target="_blank">WIconPair</a>. This can be done by giving the name of the icon instead of the URI to an image in the constructor. This also means that the icons can either be a
<a href="eu/webtoolkit/jwt/WImage.html" target="_blank">WImage</a> or a
<a href="eu/webtoolkit/jwt/WIcon.html" target="_blank">WIcon</a>. Accessing the icons of WIconPair using
<a href="eu/webtoolkit/jwt/WIconPair.html#getIcon1()" target="_blank">WIconPair#getIcon1()</a> and
<a href="eu/webtoolkit/jwt/WIconPair.html#getIcon2()" target="_blank">WIconPair#getIcon2()</a> is now deprecated in favor of
<a href="eu/webtoolkit/jwt/WIconPair.html#getUriIcon1()" target="_blank">WIconPair#getUriIcon1()</a>,
<a href="eu/webtoolkit/jwt/WIconPair.html#getUriIcon2()" target="_blank">WIconPair#getUriIcon2()</a>,
<a href="eu/webtoolkit/jwt/WIconPair.html#getIconNameIcon1()" target="_blank">WIconPair#getIconNameIcon1()</a>, and
<a href="eu/webtoolkit/jwt/WIconPair.html#getIconNameIcon2()" target="_blank">WIconPair#getIconNameIcon2()</a>.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/13131" target="_blank">Issue #13131</a>:
make the refresh after
<a href="eu/webtoolkit/jwt/WApplication.html#setLocale(java.util.Locale)" target="_blank">WApplication#setLocale()</a> optional.
</li>
<li>
<a href="https://redmine.emweb.be/issues/6584" target="_blank">Issue #6584</a>:
add the <code>x-frame-same-origin</code> configuration option that allows to configure whether the header <code>X-Frame-Options: SAMEORIGIN</code> is used or not.
</li>
</ul>
<h2>Release 4.11.1 (November 5, 2024)</h2>
<p>JWt 4.11.1 is a patch release that addresses the following issues:</p>
<ul>
<li>
<a href="https://redmine.webtoolkit.eu/issues/13041" target="_blank">Issue #13041</a>:
Increase the default number of iteration of <a href="eu/webtoolkit/jwt/auth/BCryptHashFunction.html" target="_blank">Auth::BCryptHashFunction</a> to <code>12</code>. A warning message will also be logged when using Auth::BCryptHashFunction with less than the minumum of 10 iterations that ASVS recommends.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/11868" target="_blank">Issue #11868</a>:
Added the <a href="eu/webtoolkit/jwt/WStackedWidget.html#currentWidgetChanged()" target="_blank">WStackedWidget::currentWidgetChanged()</a> signal that is emitted when the <a href="eu/webtoolkit/jwt/WStackedWidget.html" target="_blank">WStackedWidget</a> changes the element that it shows.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/13106" target="_blank">Issue #13106</a>:
ensure that the correct <code>disabled</code> class is used on a per-theme basis. This wrongly affected all Bootstrap themes.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/13104" target="_blank">Issue #13104</a>:
a Bootstrap 5 <a href="eu/webtoolkit/jwt/WDialog.html" target="_blank">WDialog</a> is now correctly raised to the front when <a href="eu/webtoolkit/jwt/WDialog.html#raiseToFront()" target="_blank">WDialog::raiseToFront()</a> is called.
</li>
<li>
<a href="https://redmine.emweb.be/issues/12813" target="_blank">Issue #12813</a>:
Added the possibility for each column of
<a href="eu/webtoolkit/jwt/WAbstractItemView.html" target="_blank">WAbstractItemView</a> to be set resizable or not independently using the
<a href="eu/webtoolkit/jwt/WAbstractItemView.html#setColumnResizeEnabled(boolean)" target="_blank">WAbstractItemView::setColumnResizeEnabled()</a>, and <a href="eu/webtoolkit/jwt/WAbstractItemView.html#setColumnResizeEnabled(boolean,int)" target="_blank">WAbstractItemView::setColumnResizeEnabled()</a> functions.
</li>
<li>
<a href="https://redmine.emweb.be/issues/11855" target="_blank">Issue #11855</a>:
the loading indicator should now be shown directly when the indicator-timeout is set to 0 instead of having a few millisecond delay.
This can be set by the <code><application-settings><indicator-timeout>0</indicator-timeout></application-settings></code> property in the <code>wt_config.xml</code>.
</li>
<li>
<a href="https://redmine.emweb.be/issues/7856" target="_blank">Issue #7856</a>:
Fix a bug where <code>change()</code> and <code>input()</code> signals would sometimes not be emitted by a
<a href="eu/webtoolkit/jwt/WSlider.html" target="_blank">WSlider</a> with native control if progressive bootstrap was enabled.
</li>
<li>
<a href="https://redmine.emweb.be/issues/11001" target="_blank">Issue #11001</a>:
Delete the extra space that was sometimes added before the first and after last element of a
<a href="eu/webtoolkit/jwt/WBoxLayout.html">WBoxLayout</a> if the spacing was more than twice as big as the margin.
</li>
<li>
<a href="https://redmine.emweb.be/issues/11008" target="_blank">Issue #11008</a>:
ensure that a JavaScript variable that retrieves the index of an item in a layout is called correctly.
</li>
<li>
<a href="https://redmine.emweb.be/issues/13115" target="_blank">Issue #13115</a>:
Fix a bug where a widget removed from a disabled parent widget and added to a different enabled parent widget would still appear disabled.
</li>
</ul>
<h2>Release 4.11.0 (October 1, 2024)</h2>
<p>
JWt 4.11.0 is a major release that includes the ability to enable MFA for authentication.
JWt is now able to support MFA in its authentication system. It is easily enabled with a single call to <a href="eu/webtoolkit/jwt/auth/AuthService.html#setMfaProvider(java.lang.String)" target="_blank">AuthService::setMfaProvider()</a>. By default an implementation for TOTP is included. This offers a way to enable an additional layer of security for your applications. Instead of remembering a single password, users can be made to enter a short code that changes often, as an additional authentication step.
Developers are also able to implement this feature in any way they see fit via the interface <a href="eu/webtoolkit/jwt/auth/mfa/AbstractMfaProcess.html" target="_blank">AbstractMfaProcess</a>.
</p>
<h3>New features</h3>
<ul>
<li>
<a href="https://redmine.webtoolkit.eu/issues/11705">Issue #11705</a>:
MFA (Multi-Factor Authentication) is now supported by means of a default implementation of TOTP (Time-Based One-Time Password). This feature can be enabled by <a href="eu/webtoolkit/jwt/auth/AuthService.html#setMfaProvider(java.lang.String)" target="_blank">AuthService::setMfaProvider()</a>, and the length of the expected code can be managed via <a href="eu/webtoolkit/jwt/auth/AuthService.html#setMfaCodeLength(int)" target="_blank">AuthService::setMFACodeLength()</a>.
Once enabled, users are allowed (but not forced) to use MFA. A developer will have to create a way that allows users to set their secret key, or override the functionality that decides whether the MFA step ought to be shown to the user during the log in process (<a href="eu/webtoolkit/jwt/auth/AuthModel.html#hasMfaStep(eu.webtoolkit.jwt.auth.User)" target="_blank">AuthModel::hasMfaStep()</a>). Alternatively, they can also set <a href="eu/webtoolkit/jwt/auth/AuthService.html#setMfaRequired(boolean)" target="_blank">AuthService::setMFARequired()</a> to <code>true</code>, which will force all users to have MFA enabled.
If enabled and required, a user will see the <a href="eu/webtoolkit/jwt/auth/mfa/TotpProcess.html" target="_blank">TotpProcess</a> when they pass the regular login. This will happen after password login. Developers can use this process to enable MFA on a per-user manner, without globally enforcing it.
This widget shows them a QR code and a secret key initially for them to store in an authenticator app or browser extension. Once stored, it will no longer show them this code or key, unless invalidated (by means of <a href="eu/webtoolkit/jwt/auth/User.html#removeIdentity(java.lang.String)" target="_blank">User::removeIdentity()</a>, which will take the same name as the <code>setMfaProvider()</code>).
<p>The above approach will be the default flow that Wt uses if MFA is enabled (and/or required). Developers are able to provide a custom implementation as well, using the <a href="eu/webtoolkit/jwt/auth/mfa/AbstractMfaProcess.html" target="_blank">AbstractMfaProcess</a> class. It is encouraged to look at the examples under <code>examples/authentication/mfa</code> in the source code, to have a concrete idea on how to use the class correctly.</p>
</li>
</ul>
<h3>Other improvements</h3>
<ul>
<li>
<a href="https://redmine.webtoolkit.eu/issues/10382" target="_blank">Issue #10382</a>:
Added customization support for the upload mechanism of
<a href="eu/webtoolkit/jwt/WFileDropWidget.html" target="_blank">WFileDropWidget</a>.
It is now possible to customize the server-side upload mechanism by returning a custom WResource from
<a href="eu/webtoolkit/jwt/WFileDropWidget.html#getUploadResource()" target="_blank">WFileDropWidget::getUploadResource()</a>
to be uploaded to.
At the client side, uploading can be modified by setting <code>wtUseCustomSend</code> and defining <code>wtCustomSend()</code>.
</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>
<a href="https://redmine.emweb.be/issues/12367" target="_blank">Issue #12367</a>:
Fix a bug where the checkbox in a
<a href="eu/webtoolkit/jwt/WPopupMenu.html" target="_blank">WPopupMenu</a> would not be checked if a
<a href="eu/webtoolkit/jwt/WMenuItem.html" target="_blank">WMenuItem</a> was clicked, and not the
<a href="eu/webtoolkit/jwt/WCheckBox.html" target="_blank">WCheckBox</a> or its label. Also fixes a bug where the signal of a <code>WMenuItem</code> checkbox would not be emitted after switching between the item being checkable or not.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/12323" target="_blank">Issue #12323</a>:
does no longer cause an issue when a <a href="eu/webtoolkit/jwt/WMenu.html#addSeparator()" target="_blank">WMenu::addSeparator()</a> was added, together with using <a href="eu/webtoolkit/jwt/WBootstrap5Theme.html" target="_blank">WBootstrap5Theme</a>.
</li>
<li>
<a href="https://redmine.emweb.be/issues/12366" target="_blank">Issue #12366</a>:
Fixed a bug where some
<a href="eu/webtoolkit/jwt/WContainerWidget.html" target="_blank">WContainerWidget</a> would send undefined information when TwoPhaseRenderingThreshold was not set to 0.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/9284">Issue #9284</a>:
a <a href="eu/webtoolkit/jwt/WTableView.html" target="_blank">WTableView</a> will now render more correctly in layouts. A combination of various layouts could lead to the table not setting its size correctly, or even not having a consistent size (apparently randomly deciding to fill in all available space, or to shrink to fit its content). This led to the issue where scrollbars were sometimes not visible, or were placed in a wrong location. By default, a table will now size correctly, and place the scrollbars accordingly, namely at the edges of its container.
</li>
</ul>
<h2>Release 4.10.4 (March 6, 2024)</h2>
<p>
JWt 4.10.4 is a (smaller) patch release that addresses the following issues.
This release is somewhat smaller due to bigger features being in the works.
Developers can expect some bigger new features in the authentication framework soon!
</p>
<ul>
<li>
<a href="https://redmine.emweb.be/issues/11685">Issue #11685</a>:
render child widgets differently when updating an existing widget. The JavaScript code that is being called by the framework to dynamically add children to an HTML element was changed so that it always appends them instead of setting the whole content. This is to avoid a widget that was added in JavaScript (with no Java counterpart) from being overwritten if the HTML of the parent would be written to.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/12283" target="_blank">Issue #12283</a>:
this corrects an additional mistake, made on top of <a href="https://redmine.webtoolkit.eu/issues/12006" target="_blank">Issue #12006</a>.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/12145" target="_blank">Issue #12145</a>:
a change to the internal enum class <a href="namespaceWt.html#aeb01f25d7c9d4a4498fb3dadc8d168c5">Property</a> caused an index and its value to be out of sync for a couple values.
</li>
</ul>
<h2>Release 4.10.3 (December 20, 2023)</h2>
<p>
JWt 4.10.3 is a patch release that addresses the following issues:
</p>
<ul>
<li>
<a href="https://redmine.webtoolkit.eu/issues/11934">Issue #11934</a>:
this corrects the rendering of a vertical <a href="eu/webtoolkit/jwt/WSlider.html">WSlider</a> for all themes. Additionally an improvement was made that introduces <a href="eu/webtoolkit/jwt/WSlider.html#setTickLength(eu.webtoolkit.jwt.WLength)">WSlider::setTickLength</a>, that allows users to set the length (width or height of the line, depending on whether the <code>WSlider</code> is <code>Orientation::Horizontal</code> or <code>Orientation::Vertical</code>) of the ticks.
For the native slider, ticks have also been enabled. Although both the positioning (the side on which ticks are placed) and their length cannot be changed. Only their interval can be manipulated through <a href="eu/webtoolkit/jwt/WSlider.html#setTickInterval(int)">WSlider::setTickInterval</a>.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/12005">Issues #12005</a>:
a step value can now be set on a <a href="eu/webtoolkit/jwt/WSlider.html">WSlider</a>, using <a href="eu/webtoolkit/jwt/WSlider.html#setStep(int)">WSlider::setStep</a>.
This functions for both the native and non-native sliders. By default the step value is set to 1.
</li>
<li>
<a href="https://redmine.emweb.be/issues/12148">Issue #12148</a>:
attributes on the main page's <html> and <body> tags can now be specified. The new functions are:
<ul>
<li><a href="eu/webtoolkit/jwt/WApplication.html#setHtmlAttribute(java.lang.String,java.lang.String)">WApplication::setHtmlAttribute</a></li>
<li><a href="eu/webtoolkit/jwt/WApplication.html#setBodyAttribute(java.lang.String,java.lang.String)">WApplication::setBodyAttribute</a></li>
</ul>
</li>
<li>
<a href="https://redmine.emweb.be/issues/12036">Issue #12036</a>:
ensures that if a <a href="eu/webtoolkit/jwt/WCheckBox.html">WCheckBox</a> and <a href="eu/webtoolkit/jwt/WRadioButton.html">WRadioButton</a> have a custom style class, it remains in place after applying the <a href="eu/webtoolkit/jwt/WBootstrap5Theme.html">WBootstrap5Theme</a>.
</li>
</ul>
<h2>Release 4.10.2 (November 8, 2023)</h2>
<p>
JWt 4.10.2 is a patch release that addresses the following issues:
</p>
<ul>
<li>
<a href="https://redmine.webtoolkit.eu/issues/11932">Issue #11932</a>:
when calling <a href="eu/webtoolkit/jwt/WPushButton.html#setMenu(eu.webtoolkit.jwt.WPopupMenu)">WPushButton::setMenu</a> after a <a href="eu/webtoolkit/jwt/WPopupMenu.html">WPopupMenu</a> had already been added,
the second menu wasn't added to the button, and both <code>WPopupMenu</code>s were removed. Now, the new <code>WPopupMenu</code> is correctly added to the button.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/11984">Issue #11984</a>:
corrected <a href="eu/webtoolkit/jwt/WTableView.html">WTableView</a>'s drag & drop functionality. When a <a href="eu/webtoolkit/jwt/WAbstractItemModel.html">WAbstractItemModel</a>'s items have the flags for drag & drop enabled (found in <a href="eu/webtoolkit/jwt/ItemFlag.html">ItemFlag</a>), the <a href="eu/webtoolkit/jwt/WAbstractItemView.html">WAbstractItemView</a> has <a href="eu/webtoolkit/jwt/WAbstractItemView.html#setDragEnabled(boolean)">setDragEnabled(true)</a> and <a href="eu/webtoolkit/jwt/WAbstractItemView.html#setEnabledDropLocations(eu.webtoolkit.jwt.DropLocation,eu.webtoolkit.jwt.DropLocation...)">setEnabledDropLocations()</a> set to <a href="eu/webtoolkit/jwt/DropLocation.html">DropLocation::BetweenRows</a>, the view will now correctly drop the items at the location indicated by the cursor, and will no longer cause an issue when moving the cursor out of the table when dragging.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/11985">Issue #11985</a>:
ensures that if a <a href="eu/webtoolkit/jwt/WStringListModel.html">WStringListModel</a> is used in a <a href="eu/webtoolkit/jwt/WTableView.html">WTableView</a> that allows drag & drop, the content of the
model is correctly updated.
</li>
<li>
<a href="https://redmine.emweb.be/issues/12012">Issue #12012</a>:
due to an oversight in <a href="https://redmine.webtoolkit.eu/issues/10512">Issue #10512</a>, the keyboard and mouse events for a <a href="eu/webtoolkit/jwt/WTreeView.html">WTreeView</a>'s node were missing.
</li>
<a href="https://redmine.emweb.be/issues/11882">Issue #11882</a>:
the <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/fieldset">fieldset</a> element, used by <a href="eu/webtoolkit/jwt/WGroupBox.html">WGroupBox</a> has been corrected when using Bootstrap 5.
A default HTML value was used here, which caused the content to not be rendered correctly.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/12006">Issue #12006</a>
a JavaScript error could occur if no semicolon was added to the JS code when called by <a href="eu/webtoolkit/jwt/WWidget.html#setJavaScriptMember(java.lang.String,java.lang.String)">setJavaScriptMember</a> or <a href="eu/webtoolkit/jwt/DomElement.html#callJavaScript(java.lang.String)">callJavaScript</a>.
</li>
</ul>
<h2>Release 4.10.0 (May 30, 2023)</h2>
<p>
JWt 4.10.0 mainly consists of new features that provide some convenience and a back-end improvement.
</p>
<h3>New features</h3>
<ul>
<li>
<a href="https://redmine.webtoolkit.eu/issues/11627" target="_blank">Issue #11627</a>:
The included Servlet API JAR was updated to version 4.0.4, the last version that still
uses the <code>javax</code> namespace, and the Servlet 2.5 support was removed. Now
<a href="eu/webtoolkit/jwt/ServletInit.html">ServletInit</a> will set the default
request encoding of the
<a href="https://jakarta.ee/specifications/servlet/4.0/apidocs/javax/servlet/servletcontext"
target="_blank">ServletContext</a> to UTF-8.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/7279">Issue #7279</a>:
added <a href="eu/webtoolkit/jwt/WEmailEdit.html">WEmailEdit</a> and
<a href="eu/webtoolkit/jwt/WEmailValidator.html">WEmailValidator</a>, implementing
a <code><input type="email"></code>.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/8760" target="_blank">Issue #8760</a>:
extended <a href="eu/webtoolkit/jwt/auth/AuthWidget.html">Auth.AuthWidget</a> with the option to resend verificiation emails. When email verification is configured to be required and the email somehow got lost, the user would be stuck not being able to log in.
When the user tries to log in now, an info message will be shown saying they need to verify their email first along with a new button to resend the verification email. The user must then enter the email address again in a dialog before the email is sent.<br/>
The virtual methods <a href="eu/webtoolkit/jwt/auth/AuthWidget.html#letResendEmailVerification()">AuthWidget.letResendEmailVerification()</a> and <a href="eu/webtoolkit/jwt/auth/AuthWidget.html#getCreateResendEmailVerificationView()">AuthWidget.getCreateResendEmailVerificationView()</a> can be used to customize the UI.
</li>
</ul>
<h3>Other improvements</h3>
<ul>
<li>
<a href="https://redmine.webtoolkit.eu/issues/11412" target="_blank">Issue #11412</a>:
shift-click to open a new window did not work for links to internal paths. Shift-click is now handled by the browser, like ctrl- and meta-click.
</li>
</ul>
<h2>Release 4.9.2 (April 18, 2023)</h2>
<p>
JWt 4.9.2 is a patch release that addresses the following issues:
</p>
<ul>
<li>
<a href="https://redmine.webtoolkit.eu/issues/11307" target="_blank">Issue #11307</a>:
fixed an issue with multiple validators where custom error messages would not be copied
before assigning arguments, causing more arguments to be appended every time the getter was used.
To fix this, we made <a href="eu/webtoolkit/jwt/WString.html">WString</a> cloneable, and made sure
the copy construction in the original C++ code is
translated to a call to <a href="eu/webtoolkit/jwt/WString.html#clone()">WString#clone()</a>.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/11321" target="_blank">Issue #11321</a>:
fixed JWt's string splitting behavior to match Wt.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/11424" target="_blank">Issue #11424</a>:
fixed redundant calls of
<a href="eu/webtoolkit/jwt/WDialog.html#setClosable(boolean)">WDialog#setClosable(false)</a>
causing a "widget not in container" error to be logged.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/10908" target="_blank">Issue #10908</a>:
fixed an issue with
<a href="eu/webtoolkit/jwt/WBootstrap5Theme.html">WBootstrap5Theme</a>
where the selection of a
<a href="eu/webtoolkit/jwt/WSuggestionPopup.html">WSuggestionPopup</a>
was not updated when using the arrow keys. We also made sure to scroll the currently
selected option into view when selected using the arrow keys.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/11433" target="_blank">Issue #11433</a>:
fixed a regression in the treeview-dragdrop example where dropping a file on the folder view was not working anymore.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/11379" target="_blank">Issue #11379</a>:
fixed a JavaScript error in <a href="eu/webtoolkit/jwt/WPaintedWidget.html">WPaintedWidget</a>.
</li>
</ul>
<h2>Release 4.9.1 (January 20, 2023)</h2>
<p>
JWt 4.9.1 is a patch release that addresses the following issues:
</p>
<ul>
<li>
<a href="https://redmine.webtoolkit.eu/issues/11230" target="_blank">Issue #11230</a>:
fixed an issue with
<a href="eu/webtoolkit/jwt/WApplication.html#suspend(java.time.Duration)">WApplication#suspend()</a>
where widgets would incorrectly believe they were still
<a href="eu/webtoolkit/jwt/WWidget.html#isRendered()">rendered</a> when unsuspending.
This would cause problems with e.g. <a href="eu/webtoolkit/jwt/WTextEdit.html">WTextEdit</a>
inside of a
<a href="eu/webtoolkit/jwt/WTemplate.html">WTemplate</a>.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/11240" target="_blank">Issue #11240</a>:
fixed an issue where the lazy loading logic breaks when removing and inserting a large
number of rows in a <a href="eu/webtoolkit/jwt/WTreeView.html">WTreeView</a>
(<a href="https://github.com/emweb/wt/pull/199" target="_blank">PR #199</a> by John Stark).
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/11180" target="_blank">Issue #11180</a>:
fixes a regression in JWt 4.9.0 where
<a href="eu/webtoolkit/jwt/EntryPointType.html#WidgetSet">WidgetSet</a> mode
failed with a "classList is undefined" error.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/11207" target="_blank">Issue #11207</a>:
fixes a regression in JWt 4.9.0 where
<a href="eu/webtoolkit/jwt/WWidget.html#setScrollVisibilityEnabled(boolean)">scroll visibility</a>
didn't work anymore.
</li>
<li>
Fixed a couple of <a href="eu/webtoolkit/jwt/WDialog.html">WDialog</a>-related
regressions when using
<a href="eu/webtoolkit/jwt/WBootstrap5Theme.html">WBootstrap5Theme</a>:
<ul>
<li>
<a href="https://redmine.webtoolkit.eu/issues/11233" target="_blank">Issue #11233</a>:
hidden <a href="eu/webtoolkit/jwt/WDialog.html">WDialog</a>s would remain visible.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/11248" target="_blank">Issue #11248</a>:
contents of a dialog could be cut off when
<a href="eu/webtoolkit/jwt/WWidget.html#setWidth(eu.webtoolkit.jwt.WLength)">setting the width</a>,
and
<a href="eu/webtoolkit/jwt/WDialog.html#setResizable(boolean)">resizing of dialogs</a>
didn't work.
</li>
</ul>
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/10138" target="_blank">Issue #10138</a>:
fixed ant build on Windows caused by ANTLR putting its output in a different location
depending on the operating system.
</li>
</ul>
<h2>Release 4.9.0 (December 22, 2022)</h2>
<p>
JWt 4.9.0 features a lot of changes under the hood: we have painstakingly removed jQuery from JWt,
modernized the JavaScript, and added a linter, formatter, and a new minifier in the process.
</p>
<p>
Also, now that we added some tooling to customize WBootstrap5Theme, the
<a href="http://jwt.emweb.be/jwt-gallery/gallery" target="_blank">widget gallery</a>'s
primary color was updated to be more in line with JWt's website.
</p>
<h3>Backwards incompatible changes</h3>
<h4>JWt now requires Java 11</h4>
<p>
JWt 4.9.0 bumps the minimum required Java version up to 11. We changed all of the
<code>build.xml</code> files to use <code>release="11"</code> instead of the old
<code>source</code> and <code>target</code> options.
</p>
<h4>Removal of jQuery</h4>
<p>
We removed every use of jQuery from JWt, and jQuery is now no longer automatically loaded.
This means that if you relied on the included jQuery version (for example, the <code>$</code> object or function),
you will have to make some changes to make it work with JWt 4.9.0. There are several options:
</p>
<ul>
<li>
<p>
Replace your uses of jQuery with vanilla JavaScript, which is what we did.
</p>
<p>
For example, the <code>$</code> function can often be replaced with
<a href="https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector" target="_blank">querySelector</a> or
<a href="https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll" target="_blank">querySelectorAll</a>.
</p>
</li>
<li>
<p>
Load jQuery yourself using
<a href="eu/webtoolkit/jwt/WApplication.html#require(java.lang.String,java.lang.String)">WApplication#require()</a>.
<a href="eu/webtoolkit/jwt/WApplication.html#requireJQuery(java.lang.String)">WApplication#requireJQuery()</a>
has been marked as deprecated.
</p>
<p>
For example:
<code>application.require("https://code.jquery.com/jquery-3.6.1.slim.min.js", "$");</code>.
</p>
</li>
</ul>
<h4>Changes to WBootstrap5Theme</h4>
<dl>
<dt>Collapsible panels</dt>
<dd>
<a href="eu/webtoolkit/jwt/WBootstrap5Theme.html">WBootstrap5Theme</a>
has used an
<a href="https://getbootstrap.com/docs/5.2/components/accordion/" target="_blank">accordion</a>
instead of a
<a href="https://getbootstrap.com/docs/5.2/components/card/" target="_blank">card</a>
for collapsible panels since its introduction in JWt 4.6.0.
Now, <a href="eu/webtoolkit/jwt/WPanel.html">WPanel</a> always uses a
<a href="https://getbootstrap.com/docs/5.2/components/card/" target="_blank">card</a>.
This allows all panels to have a consistent appearance, regardless of whether they can be collapsed or not.
Additionally, the
<a href="eu/webtoolkit/jwt/WPanel.html#collapse()">WPanel#collapse()</a> and
<a href="eu/webtoolkit/jwt/WPanel.html#expand()">WPanel#expand()</a> functions will now work
as expected with
<a href="eu/webtoolkit/jwt/WBootstrap5Theme.html">WBootstrap5Theme</a>.
This change resolves <a href="https://redmine.webtoolkit.eu/issues/10364" target="_blank">issue #10364</a>.
</dd>
<dt>Bootstrap 5 theme customization</dt>
<dd>
We've made it easier to customize the Bootstrap 5 theme.
<a href="eu/webtoolkit/jwt/WBootstrap5Theme.html">WBootstrap5Theme</a> now loads
a single CSS file that is built from
<a href="https://sass-lang.com/" target="_blank">Sass</a> source files.
The
<a href="http://jwt.emweb.be/jwt-gallery/gallery" target="_blank">widget gallery</a>
makes use of this by changing the primary color from Bootstrap's blue to the orange
used in JWt's logo and homepage.
This change resolves <a href="https://redmine.webtoolkit.eu/issues/9350" target="_blank">issue #9350</a>.
</dd>
</dl>
<h3>New features</h3>
<ul>
<li>
Added
<a href="eu/webtoolkit/jwt/WProgressBar.html#setValueStyleClass(java.lang.String)">WProgressBar#setValueStyleClass()</a>
(<a href="https://github.com/emweb/wt/pull/131" target="_blank">PR #131</a>
by maximiliank on GitHub).
</li>
<li>
Added <a href="eu/webtoolkit/jwt/Utils.html#htmlAttributeValue(java.lang.String)">Utils#htmlAttributeValue()</a>
to escape values if they are put into the value of an HTML tag.
</li>
</ul>
<h3>Other improvements</h3>
<ul>
<li>
<a href="https://redmine.webtoolkit.eu/issues/11067" target="_blank">Issue #11067</a>:
<a href="eu/webtoolkit/jwt/WWidget.html#animateShow(eu.webtoolkit.jwt.WAnimation)">animateShow()</a> and
<a href="eu/webtoolkit/jwt/WWidget.html#animateHide(eu.webtoolkit.jwt.WAnimation)">animateHide()</a> were
overhauled to use the
<a
href="https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API"
target="_blank">Web Animations API</a>. This fixes issues with choppy animations.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/8629" target="_blank">Issue #8629</a>:
In order to ease maintenance, and make contributing to (J)Wt easier, we changed the JavaScript
minifier from the old version of Google Closure compiler we were using to
<a href="https://terser.org/" target="_blank">terser</a>.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/10966" target="_blank">Issue #10966</a>:
Added a JavaScript formatter to format (J)Wt's JavaScript code.
Its usage is detailed in the Wt source tree at
<a
href="https://github.com/emweb/wt/blob/master/doc/development/javascript.md"
target="_blank"><code>doc/development/javascript.md</code></a>.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/10395" target="_blank">Issue #10395</a>:
<a href="eu/webtoolkit/jwt/WPanel.html#setTitleBar(boolean)">WPanel#setTitleBar(false)</a>
now automatically calls
<a href="eu/webtoolkit/jwt/WPanel.html#setCollapsible(boolean)">WPanel#setCollapsible(false)</a>.
</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>
<a href="https://redmine.webtoolkit.eu/issues/9076" target="_blank">Issue #9076</a>:
<a href="eu/webtoolkit/jwt/WDateEdit.html">WDateEdit</a>
gave a javascript error when opening the calendar popup if the
application was rendered in
<a href="eu/webtoolkit/jwt/EntryPointType.html#WidgetSet">WidgetSet</a>
mode.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/11138" target="_blank">Issue #11138</a>:
Fixed an issue in the widget gallery where images would not be loaded correctly if the path of the servlet
context is non-empty.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/10488" target="_blank">Issue #10488</a>:
Long polling requests interrupted on the server side now no longer prevent keep alive requests from being sent,
and thus the session from timing out. This was possible when JWt is deployed behind a reverse proxy that has
a shorter request timeout than the
<a href="eu/webtoolkit/jwt/Configuration.html#getServerPushTimeout()">server push timeout</a>.
</li>
</ul>
<h2>Release 4.8.3 (December 22, 2022)</h2>
<p>
JWt 4.8.3 is a patch release that addresses the following issues:
</p>
<ul>
<li>
<a href="https://redmine.webtoolkit.eu/issues/10995" target="_blank">Issue #10995</a>:
fixed an issue with <a href="eu/webtoolkit/jwt/WContainerWidget.html">WContainerWidget</a>
where a session could terminate with the text "WContainerWidget: error parsing: undefined".
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/8093" target="_blank">Issue #8093</a>:
fixed an issue where the bottom axis could be clipped off of a tall
<a href="eu/webtoolkit/jwt/chart/WCartesianChart.html">WCartesianChart</a>
(<a href="https://github.com/emweb/wt/pull/178" target="_blank">PR #178</a> by Apivan Tuntakurn).
</li>
</ul>
<h2>Release 4.8.2 (November 4, 2022)</h2>
<p>
JWt 4.8.2 is a simple patch release that fixes
<a href="https://redmine.webtoolkit.eu/issues/10976" target="_blank">issue #10976</a>:
<a href="eu/webtoolkit/jwt/WAbstractItemView.html#setHeaderAlignment(int,java.util.EnumSet)">WAbstractItemView#setHeaderAlignment</a>
would not properly update vertical alignment.
</p>
<h2>Release 4.8.1 (September 22, 2022)</h2>
<p>
JWt 4.8.1 is a simple patch release that addresses
<a href="https://redmine.webtoolkit.eu/issues/10825" target="_blank">issue #10825</a>.
Some left over JavaScript code in
<a href="eu/webtoolkit/jwt/WGoogleMap.html#setMapTypeControl(eu.webtoolkit.jwt.MapTypeControl)">WGoogleMap#setMapTypeControl</a>
targeting the v2 API would cause a JavaScript error.
</p>
<h2>Release 4.8.0 (July 8, 2022)</h2>
<p>
JWt 4.8.0 doesn't come with any big new features, but it does include some improvements.
</p>
<h3>Changes in default behavior</h3>
<ul>
<li>
<a href="https://redmine.webtoolkit.eu/issues/8660" target="_blank">Issue #8660</a>:
The default value of
<a href="eu/webtoolkit/jwt/auth/OAuthService.html#isPopupEnabled()">OAuthService#isPopupEnabled()</a>
was changed from <code>true</code> to <code>false</code>.
This means that the default method when using OAuth is always to redirect instead of using a popup.
</li>
</ul>
<h3>Improvements</h3>
<ul>
<li>
<a href="https://redmine.webtoolkit.eu/issues/10019" target="_blank">Issue #10019</a>:
Added a cleaner fix for <a href="https://redmine.webtoolkit.eu/issues/9922" target="_blank">issue #9922</a>.
Instead of discarding responses containing only <code>{}</code>, JWt now no longer delineates its JavaScript
with curly brackets.
</li>
<li>
<a href="https://github.com/emweb/wt/pull/192" target="_blank">PR #192</a>:
Removed obsolete <code>cursor: hand</code>
</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>
<a href="https://redmine.webtoolkit.eu/issues/9938" target="_blank">Issue #9938</a>:
The close icon for a <a href="eu/webtoolkit/jwt/WDialog.html">WDialog</a> was displayed on the left side
of the title bar when using bootstrap 5. This was fixed by using the Bootstrap 5 appropriate
<code><button></code> with the <code>btn-close</code> style class.
A new <code>Wt.WDialog.titlebar</code> template was introduced so that the rendering
of the title bar can be overridden.
</li>
</ul>
<h2>Release 4.7.3 (July 8, 2022)</h2>
<p>
Wt 4.7.3 is a patch release that addresses the following issues:
</p>
<ul>
<li>
<a href="https://redmine.webtoolkit.eu/issues/10341" target="_blank">Issue #10341</a>:
Fixed an issue where JavaScript validators would incorrectly mark a
<a href="eu/webtoolkit/jwt/WLineEdit.html">WLineEdit</a>
that used an
<a href="eu/webtoolkit/jwt/WLineEdit.html#setInputMask(java.lang.String)">input mask</a>
as invalid, since they would not take the input mask into account.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/9719" target="_blank">Issue #9719</a>
(<a href="https://github.com/emweb/wt/pull/186" target="_blank">PR #186</a>):
Fixed a regression where panning an interactive
<a href="eu/webtoolkit/jwt/chart/WCartesianChart.html">WCartesianChart</a>
would not update the
<a href="eu/webtoolkit/jwt/chart/WAxisSliderWidget.html">WAxisSliderWidget</a>.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/10362" target="_blank">Issue #10362</a>:
<a href="eu/webtoolkit/jwt/WPanel.html#collapse()">WPanel#collapse()</a> and
<a href="eu/webtoolkit/jwt/WPanel.html#expand()">WPanel#expand()</a>
would cause a null pointer exception
<a href="eu/webtoolkit/jwt/WBootstrap5Theme.html">WBootstrap5Theme</a>. Now they do nothing.
</li>
<li>
<a href="https://github.com/emweb/wt/pull/188" target="_blank">PR #188</a>:
Fixed an issue where
<a href="eu/webtoolkit/jwt/WAbstractItemModel.html#insertColumn(int)">WTable#insertColumn</a>
would not properly associate the table with the newly created column.
</li>
<li>
Fixed <a href="https://redmine.webtoolkit.eu/issues/9923" target="_blank">issue #9923</a>:
A <a href="eu/webtoolkit/jwt/WFileDropWidget.html">WFileDropWidget</a> with
<a href="eu/webtoolkit/jwt/WFileDropWidget.html#setAcceptDrops(boolean)">setAcceptDrops()</a>
<code>false</code> and
<a href="eu/webtoolkit/jwt/WFileDropWidget.html#setDropIndicationEnabled(boolean)">setDropIndicationEnabled()</a>
<code>true</code> would render the page unresponsive.
</li>
<li>
Fixed <a href="https://redmine.webtoolkit.eu/issues/10578" target="_blank">issue #10578</a>:
Changing the validator of a
<a href="eu/webtoolkit/jwt/WDateEdit.html">WDateEdit</a> would not update the
<a href="eu/webtoolkit/jwt/WDateEdit.html#getBottom()">getBottom()</a> and
<a href="eu/webtoolkit/jwt/WDateEdit.html#getTop()">getTop()</a> of the
<code>WDateEdit</code> correctly.
</li>
</ul>
<h2>Release 4.7.2 (May 12, 2022)</h2>
<p>
JWt 4.7.2 is a patch release that addresses the following issue:
<ul>
<li>
<a href="https://redmine.webtoolkit.eu/issues/10003" target="_blank">Issue #10003</a>:
Calling <a href="eu/webtoolkit/jwt/WApplication.html#refresh()">WApplication#refresh()</a>
in the application constructor (e.g. by setting the locale) would produce a JavaScript error if there was
a <a href="eu/webtoolkit/jwt/WSpinBox.html">WSpinBox</a> in the widget tree.
</li>
</ul>
</p>
<h2>Release 4.7.1 (April 15, 2022)</h2>
<p>
JWt 4.7.1 is a patch release that addresses the following issues:
<ul>
<li>
<a href="https://redmine.webtoolkit.eu/issues/9922" target="_blank">Issue #9922</a>:
JWt would send an update to the browser on every call to
<a href="eu/webtoolkit/jwt/WApplication.html#triggerUpdate()">WApplication#triggerUpdate()</a>
if server push was enabled.
This is because JWt thought the state was dirty when its JavaScript response buffer contained only <code>{}</code> (empty
block). This has been fixed by not sending a response if the buffer contains only <code>{}</code>.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/9695" target="_blank">Issue #9695</a>:
If a <a href="eu/webtoolkit/jwt/WSuggestionPopup.html">WSuggestionPopup</a> was created before the dialog it appears in,
it would be displayed below the dialog. The <code>z-index</code> of
<code>WSuggestionPopup</code> is now calculated using javascript so it is always shown on top.
</li>
</ul>
</p>
<h2>Release 4.7.0 (March 11, 2022)</h2>
<p>JWt 4.7.0 is a smaller release with no major new features to speak of, just some improvements and bug fixes here and there.</p>
<h3>Notable changes in default behavior</h3>
<p>These changes affect default behavior in JWt, and may require special attention:</p>
<ul>
<li>
<a href="https://redmine.webtoolkit.eu/issues/7434" target="_blank">Issue #7434</a>:
<a href="eu/webtoolkit/jwt/WColor.html#getCssText()">WColor#getCssText()</a> now outputs
the color in <code>rgba</code> format by default.
It is now possible to set the opacity using such functions as
<a href="eu/webtoolkit/jwt/WCssDecorationStyle.html#setBackgroundColor(eu.webtoolkit.jwt.WColor)">WCssDecorationStyle#setBackgroundColor()</a>.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/8782" target="_blank">Issue #8782</a>:
When using drag/drop in combination with
<a href="eu/webtoolkit/jwt/WStandardItemModel.html">WStandardItemModel</a>,
the item flags are now copied. Previously, after dragging an item one time
the <a href="eu/webtoolkit/jwt/ItemFlag.html#DragEnabled">ItemFlag.DragEnabled</a>
flag would be lost and the item would no longer be draggable.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/9591" target="_blank">Issue #9591</a>:
Added <a href="eu/webtoolkit/jwt/servlet/WebRequest.html#getUrlScheme(eu.webtoolkit.jwt.Configuration)">WebRequest#getUrlScheme</a>,
which looks at <code>X-Forwarded-Proto</code> if JWt is behind a trusted reverse proxy.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/9056" target="_blank">Issue #9056</a>:
<a href="eu/webtoolkit/jwt/WFileDropWidget.html#getUploads()">WFileDropWidget#uploads()</a> now returns a copy of the list of uploads.
</li>
</ul>
<h3>Removals</h3>
<ul>
<li>
Since Google Maps v2 is no longer available as of May 26 2021, JWt no longer supports v2.
</li>
</ul>
<h2>Release 4.6.3 (March 10, 2022)</h2>
<p>
JWt 4.6.3 is a patch release that addresses the following issues:
<ul>
<li>
<a href="https://redmine.webtoolkit.eu/issues/9790" target="_blank">Issue #9790</a>:
A localized <a href="eu/webtoolkit/jwt/WText.html">WText</a> with <a href="eu/webtoolkit/jwt/TextFormat.html#XHTML">TextFormat.XHTML</a> was not refreshed properly when using arguments.
</li>
</ul>
</p>
<h2>Release 4.6.2 (February 15, 2022)</h2>
<p>
JWt 4.6.2 is a patch release that addresses the following issues:
<ul>
<li>
<a href="https://redmine.webtoolkit.eu/issues/9424" target="_blank">Issue #9424</a>:
The special "no selection" status of
<a href="eu/webtoolkit/jwt/WComboBox.html">WComboBox</a>
was lost if the items were rerendered, e.g. if the model changed.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/9606" target="_blank">Issue #9606</a>:
fixed an exception being thrown in <a href="eu/webtoolkit/jwt/WMenuItem.html">WMenuItem</a>.
</li>
</ul>
</p>
<h2>Release 4.6.1 (December 23, 2021)</h2>
<p>
JWt 4.6.1 is a single bug fix release, fixing a regression
(<a href="https://redmine.webtoolkit.eu/issues/9523" target="_blank">issue #9523</a>).
A potential null dereference would crash the Wt site or widget gallery every few days.
</p>
<h2>Release 4.6.0 (December 14, 2021)</h2>
<p>JWt 4.6.0 has been a long time coming, but development has not been standing still. Among other things,
JWt 4.6.0 adds support for Bootstrap 5.</p>
<h3>Bootstrap 5 theming support (<a href="https://redmine.webtoolkit.eu/issues/7418" target="_blank">issue #7418</a>)</h3>
<p>
We split up <a href="eu/webtoolkit/jwt/WBootstrapTheme.html">WBootstrapTheme</a> into
<a href="eu/webtoolkit/jwt/WBootstrap2Theme.html">WBootstrap2Theme</a> and
<a href="eu/webtoolkit/jwt/WBootstrap3Theme.html">WBootstrap3Theme</a>, and added
<a href="eu/webtoolkit/jwt/WBootstrap5Theme.html">WBootstrap5Theme</a>. We found that the
different Bootstrap versions were distinct enough to warrant splitting each version of the theme up into its own class.
</p>
<p>
We abandoned development of <code>WBootstrap4Theme</code>, since there were still some unsolved
issues with it, and we didn't expect many users to be interested in it.
</p>
<p>
We also updated the design of the <a href="http://jwt.emweb.be/jwt-gallery/gallery" target="_blank">widget gallery</a>.
It now uses Bootstrap 5, and no longer uses box layouts, instead opting for a more responsive design featuring
a collapsible menu on narrow screens. This means that the widget gallery is finally usable on mobile phones!
</p>
<h3>Other features and improvements</h3>
<ul>
<li>
It is now possible to suspend the <a href="eu/webtoolkit/jwt/WApplication.html">WApplication</a> using the
<a href="eu/webtoolkit/jwt/WApplication.html#suspend(java.time.Duration)">suspend</a> function. Previously,
logging in using an external authentication provider required a popup, but this can now be done through a redirect
(<a href="eu/webtoolkit/jwt/auth/OAuthService.html#setPopupEnabled(boolean)">OAuthService#setPopupEnabled()</a>).
This can also be useful for redirecting to payment providers.
(See <a href="https://redmine.webtoolkit.eu/issues/7742" target="_blank">issue #7742</a>.)
</li>
<li>
The Bootstrap themes now no longer need an active <a href="eu/webtoolkit/jwt/WApplication.html">WApplication</a>
upon construction to properly function, through the addition of an <a href="eu/webtoolkit/jwt/WTheme.html#init(eu.webtoolkit.jwt.WApplication)">init()</a> function.
(See <a href="https://redmine.webtoolkit.eu/issues/9204" target="_blank">issue #9204</a>.)
</li>
<li>The <a href="eu/webtoolkit/jwt/WAbstractItemView.html">WAbstractItemView</a> now allows drag/drop in between rows.
See <a href="eu/webtoolkit/jwt/WAbstractItemView.html#setEnabledDropLocations(eu.webtoolkit.jwt.DropLocation,eu.webtoolkit.jwt.DropLocation...)">setEnabledDropLocations()</a>.
(See <a href="https://redmine.webtoolkit.eu/issues/8636" target="_blank">issue #8636</a>.)</li>
<li>Ability to change the row header count of <a href="eu/webtoolkit/jwt/WTableView.html" target="_blank">WTableView</a>
after it is rendered (see <a href="https://redmine.webtoolkit.eu/issues/8077" target="_blank">issue #8077</a>).</li>
<li>Splitting up updates to stay under the form data limit when many updates are rapidly generated
(<a href="https://redmine.webtoolkit.eu/issues/7990" target="_blank">issue #7990</a>).</li>
<li>Revert delay of <a href="eu/webtoolkit/jwt/WWidget.html#load()">WWidget#load()</a>.
Load now happens when a widget is added to the widget tree.
(See <a href="https://redmine.webtoolkit.eu/issues/7968" target="_blank">issue #7968</a>.)</li>
<li>Added option to not automatically select first suggestion of a
<a href="eu/webtoolkit/jwt/WSuggestionPopup.html">WSuggestionPopup</a>.</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li><a href="https://redmine.webtoolkit.eu/issues/8972" target="_blank">Issue #8972</a>: fixed a regression with
<a href="eu/webtoolkit/jwt/WResource.html#setInternalPath(java.lang.String)">WResource::setInternalPath()</a>.</li>
<li><a href="https://redmine.webtoolkit.eu/issues/8531" target="_blank">Issue #8531</a>:
fixed deletion/modification of remember me cookie when using websockets.</li>
<li><a href="https://redmine.webtoolkit.eu/issues/8336" target="_blank">Issue #8336</a>: fixed
<a href="eu/webtoolkit/jwt/WNavigationBar.html">WNavigationBar</a> regression: popup menu remains selected.</li>
<li><a href="https://redmine.webtoolkit.eu/issues/8135" target="_blank">Issue #8135</a>:
<a href="eu/webtoolkit/jwt/WMenu.html">WMenu</a> submenu selection not proparly propagated.</li>
<li><a href="https://redmine.webtoolkit.eu/issues/7811" target="_blank">Issue #7811</a>: invalid ackId.</li>
<li><a href="https://redmine.webtoolkit.eu/issues/7975" target="_blank">Issue #7975</a>: drag-drop icon under dialog.</li>
</ul>
<h2>Release 4.5.1 (October 7, 2021)</h2>
<p>JWt 4.5.1 is a bugfix release containing the following changes:</p>
<ul>
<li>
<a href="https://redmine.webtoolkit.eu/issues/9008" target="_blank">Issue #9008</a>:
Fixed possible JavaScript issues by appending a semicolon to all JavaScript statements when using
<a href="eu/webtoolkit/jwt/WApplication.html#doJavaScript(java.lang.String,boolean)">doJavaScript</a>.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/8765" target="_blank">Issue #8765</a>:
fixed an issue where <code>trustedProxies</code> was <code>null</code> if the <a href="eu/webtoolkit/jwt/Configuration.html">Configuration</a>
was loaded from an XML file.
</li>
<li>
<a href="https://redmine.webtoolkit.eu/issues/8407" target="_blank">Issue #8407</a>:
fixed an issue in <a href="eu/webtoolkit/jwt/WTreeView.html">WTreeView</a> where the expand icon was not removed
when removing the last child.
</li>
<li>