TP 4.2 - Messages de commits

TP 4.2 - Messages de commits

Les messages de commit suivants vous paraissent-ils satisfaisants ?

Patch 1

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
commit 2c5b1ebb9c30652099e5510edd604ff481135796
Author: Ralf Gommers <ralf.gommers@gmail.com>
Date:   Tue, 24 Feb 2026 11:05:47 +0100

   MAINT: remove download-wheels.py and update release-requirements.txt

diff --git a/doc/RELEASE_WALKTHROUGH.rst b/doc/RELEASE_WALKTHROUGH.rst
index c8e3da3095b5..2abc89fcd5aa 100644
--- a/doc/RELEASE_WALKTHROUGH.rst
+++ b/doc/RELEASE_WALKTHROUGH.rst
@@ -17,8 +17,6 @@ documentation. There are a few ways to streamline things:
 
 - Git can be set up to use a keyring to store your GitHub personal access token.
   Search online for the details.
-- You can use the ``keyring`` app to store the PyPI password for twine. See the
-  online twine documentation for details.
 
 
 Prior to release
diff --git a/requirements/release_requirements.txt b/requirements/release_requirements.txt
index eaa092560d2d..55079d795ed9 100644
--- a/requirements/release_requirements.txt
+++ b/requirements/release_requirements.txt
@@ -1,16 +1,9 @@
 # These packages are needed for a release in addition to those needed
 # for building, testing, and the creation of documentation.
 
-# download-wheels.py
-urllib3
-beautifulsoup4
-
 # changelog.py
 pygithub
 gitpython>=3.1.30
 
-# uploading wheels
-twine
-
 # uploading release documentation
 packaging
diff --git a/tools/download-wheels.py b/tools/download-wheels.py
deleted file mode 100644
index 38a8360f0437..000000000000
--- a/tools/download-wheels.py
+++ /dev/null
@@ -1,132 +0,0 @@
-#!/usr/bin/env python3
-"""
-Script to download NumPy wheels from the Anaconda staging area.
-
-Usage::
-
-    $ ./tools/download-wheels.py <version> -w <optional-wheelhouse>
-
-The default wheelhouse is ``release/installers``.
-
-Dependencies
-------------
-
-- beautifulsoup4
-- urllib3
-
-Examples
---------
-
-While in the repository root::
-
-    $ python tools/download-wheels.py 1.19.0
-    $ python tools/download-wheels.py 1.19.0 -w ~/wheelhouse
-
-"""
-import argparse
-import os
-import re
-import shutil
-
-import urllib3
-from bs4 import BeautifulSoup
-
-__version__ = "0.2"
-
-# Edit these for other projects.
-
-# The first URL is used to get the file names as it avoids the need for paging
-# when the number of files exceeds the page length. Note that files/page is not
-# stable and can change when the page layout changes. The second URL is used to
-# retrieve the files themselves. This workaround is copied from SciPy.
-NAMES_URL = "https://pypi.anaconda.org/multibuild-wheels-staging/simple/numpy/"
-FILES_URL = "https://anaconda.org/multibuild-wheels-staging/numpy"
-
-# Name prefix of the files to download.
-PREFIX = "numpy"
-
-# Name endings of the files to download.
-WHL = r"-.*\.whl$"
-ZIP = r"\.zip$"
-GZIP = r"\.tar\.gz$"
-SUFFIX = rf"({WHL}|{GZIP}|{ZIP})"
-
-
-def get_wheel_names(version):
-    """ Get wheel names from Anaconda HTML directory.
-
-    This looks in the Anaconda multibuild-wheels-staging page and
-    parses the HTML to get all the wheel names for a release version.
-
-    Parameters
-    ----------
-    version : str
-        The release version. For instance, "1.18.3".
-
-    """
-    http = urllib3.PoolManager(cert_reqs="CERT_REQUIRED")
-    tmpl = re.compile(rf"^.*{PREFIX}-{version}{SUFFIX}")
-    index_url = f"{NAMES_URL}"
-    index_html = http.request('GET', index_url)
-    soup = BeautifulSoup(index_html.data, 'html.parser')
-    return sorted(soup.find_all(string=tmpl))
-
-
-def download_wheels(version, wheelhouse, test=False):
-    """Download release wheels.
-
-    The release wheels for the given NumPy version are downloaded
-    into the given directory.
-
-    Parameters
-    ----------
-    version : str
-        The release version. For instance, "1.18.3".
-    wheelhouse : str
-        Directory in which to download the wheels.
-
-    """
-    http = urllib3.PoolManager(cert_reqs="CERT_REQUIRED")
-    wheel_names = get_wheel_names(version)
-
-    for i, wheel_name in enumerate(wheel_names):
-        wheel_url = f"{FILES_URL}/{version}/download/{wheel_name}"
-        wheel_path = os.path.join(wheelhouse, wheel_name)
-        with open(wheel_path, "wb") as f:
-            with http.request("GET", wheel_url, preload_content=False,) as r:
-                info = r.info()
-                length = int(info.get('Content-Length', '0'))
-                if length == 0:
-                    length = 'unknown size'
-                else:
-                    length = f"{(length / 1024 / 1024):.2f}MB"
-                print(f"{i + 1:<4}{wheel_name} {length}")
-                if not test:
-                    shutil.copyfileobj(r, f)
-    print(f"\nTotal files downloaded: {len(wheel_names)}")
-
-
-if __name__ == "__main__":
-    parser = argparse.ArgumentParser()
-    parser.add_argument(
-        "version",
-        help="NumPy version to download.")
-    parser.add_argument(
-        "-w", "--wheelhouse",
-        default=os.path.join(os.getcwd(), "release", "installers"),
-        help="Directory in which to store downloaded wheels\n"
-             "[defaults to <cwd>/release/installers]")
-    parser.add_argument(
-        "-t", "--test",
-        action='store_true',
-        help="only list available wheels, do not download")
-
-    args = parser.parse_args()
-
-    wheelhouse = os.path.expanduser(args.wheelhouse)
-    if not os.path.isdir(wheelhouse):
-        raise RuntimeError(
-            f"{wheelhouse} wheelhouse directory is not present."
-            " Perhaps you need to use the '-w' flag to specify one.")
-
-    download_wheels(args.version, wheelhouse, test=args.test)

Patch 2

1
2
3
4
5
6
7
8
9
10
11
12
13
commit ce35ea21a959677b9f91ea2da277799cd5c9bf0c
Author: Inkscape <inkscape-translator@lists.inkscape.org>
Date:   Sun, 1 Feb 2026 02:21:21 +0000

   update translations

diff --git a/po b/po
index 916beb187c..7b4c41d119 160000
--- a/po
+++ b/po
@@ -1 +1 @@
-Subproject commit 916beb187c71cad300e1fd56e3f0f58e51b8066a
+Subproject commit 7b4c41d119f0ddc73c3a6c8e3a4eb03403bbe23c

Patch 3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
commit 5825533f14d639140c6a2529b95806f098eacdd8
Author: Martin Owens <doctormo@geek-2.com>
Date:   Mon, 26 Jan 2026 18:01:22 -0500

   Fix missing paste on page metadata

   This prevented users from setting a key binding

diff --git a/src/actions/actions-edit-window.cpp b/src/actions/actions-edit-window.cpp
index 8218face05..98fe1ed5fa 100644
--- a/src/actions/actions-edit-window.cpp
+++ b/src/actions/actions-edit-window.cpp
@@ -64,6 +64,7 @@ std::vector<std::vector<Glib::ustring>> raw_data_edit_window =
     // clang-format off
     {"win.paste",                        N_("Paste"),                        SECTION, N_("Paste objects from clipboard to mouse point, or paste text")},
     {"win.paste-in-place",               N_("Paste In Place"),               SECTION, N_("Paste objects from clipboard to the original position of the copied objects")},
+    {"win.paste-on-page",                N_("Paste On Page"),                 SECTION, N_("Paste objects from clipboard into the same place on the selected page.")},
     {"win.path-effect-parameter-next",   N_("Next path effect parameter"),   SECTION, N_("Show next editable path effect parameter")}
     // clang-format on
 };

Patch 4

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
commit b2a221ef50240936f8b06495f476d38550c7f029
Author: PBS <pbs3141@gmail.com>
Date:   Tue, 9 Dec 2025 03:47:11 +0100

   Further cleanup

   * Get rid of some <regex>
   * Only run build_menu() once, not on every window open
   * Rewrite menus in place rather than completely rebuilding.
   * Fix missing icons to Gtk::ThemedIcon apparently not working.
   * Change non-standard document-close icon to window-close.

 share/ui/menus.ui                             |   2 +-
 src/inkscape-application.cpp                  |   2 +-
 src/inkscape-window.cpp                       |  34 ++--
 src/ui/contextmenu.cpp                        |  21 ++-
 .../desktop/menu-set-tooltips-shift-icons.cpp |  15 +-
 .../desktop/menu-set-tooltips-shift-icons.h   |  19 +--
 src/ui/desktop/menubar.cpp                    | 154 +++++++-----------
 src/ui/desktop/menubar.h                      |  15 +-
 src/ui/dialog/inkscape-preferences.cpp        |   5 +-
 src/ui/dialog/inkscape-preferences.h          |   1 -
 src/ui/toolbar/tool-toolbar.cpp               |   4 +-
 src/ui/widget/generic/popover-menu.cpp        |   3 +-
 12 files changed, 111 insertions(+), 164 deletions(-)

Patch 5

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
commit d91a8b2abec31a52071cb0956580375ae9c25992
Author: Jehan <jehan@girinstud.io>
Date:   Wed, 25 Feb 2026 15:24:04 +0100

   Fix issue 15824

diff --git a/app/core/gimpdrawablefilter.c b/app/core/gimpdrawablefilter.c
index 4ac2a6cc942..4aa849e6142 100644
--- a/app/core/gimpdrawablefilter.c
+++ b/app/core/gimpdrawablefilter.c
@@ -1456,16 +1456,11 @@ gimp_drawable_filter_sync_region (GimpDrawableFilter *filter)
                          "y", (gdouble) -filter->filter_area.y,
                          NULL);
 
-          if (first_filter)
-            gegl_node_set (filter->crop_before,
-                           "operation", "gegl:crop",
-                           "width",     (gdouble) filter->filter_area.width,
-                           "height",    (gdouble) filter->filter_area.height,
-                           NULL);
-          else
-            gegl_node_set (filter->crop_before,
-                           "operation", "gegl:nop",
-                           NULL);
+          gegl_node_set (filter->crop_before,
+                         "operation", "gegl:crop",
+                         "width",     (gdouble) filter->filter_area.width,
+                         "height",    (gdouble) filter->filter_area.height,
+                         NULL);
         }
 
       if (filter->filter_clip)

Proposer un bon message de commit pour les patchs suivants

Patch 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
diff --git a/src/libnrtype/font-lister.cpp b/src/libnrtype/font-lister.cpp
index 8b0e992f58..426ee7aa60 100644
--- a/src/libnrtype/font-lister.cpp
+++ b/src/libnrtype/font-lister.cpp
@@ -113,6 +113,10 @@ void FontLister::init_font_families(int group_offset, int group_size)
     // Traverse through the family names and set up the list store
     for (auto const &key_val : pango_family_map) {
         if (!key_val.first.empty()) {
+#if __APPLE__
+            // on macOS hide fonts with names starting with a dot; those are internal system fonts
+            if (key_val.first[0] == '.') continue;
+#endif
             auto row = *font_list_store->append();
             row[font_list.family] = key_val.first;
             // we don't set this now (too slow) but the style will be cached if the user

Patch 2

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
diff --git a/scripts/modules/_bpy_internal/assets/remote_library_listing/asset_downloader.py b/scripts/modules/_bpy_internal/assets/remote_library_listing/asset_downloader.py
index 72d88d52b8d..089f8c5825d 100644
--- a/scripts/modules/_bpy_internal/assets/remote_library_listing/asset_downloader.py
+++ b/scripts/modules/_bpy_internal/assets/remote_library_listing/asset_downloader.py
@@ -55,7 +55,7 @@ def download_asset_file(
 
     :param save_to: the path on disk where to download to. While the download is
         pending, ".part" will be appended to the filename. When the download
-        finishes succesfully, it is renamed to the final path.
+        finishes successfully, it is renamed to the final path.
     """
     try:
         downloader = _asset_downloaders[asset_library_url]
@@ -107,7 +107,7 @@ def download_preview(
 
     :param dst_filepath: the path on disk where to download to. While the
         download is pending, ".part" will be appended to the filename. When the
-        download finishes succesfully, it is renamed to the final path.
+        download finishes successfully, it is renamed to the final path.
     """
     import time
 
diff --git a/scripts/modules/_bpy_internal/assets/remote_library_listing/cli_listing_downloader.py b/scripts/modules/_bpy_internal/assets/remote_library_listing/cli_listing_downloader.py
index 637ab773502..107dd73312f 100644
--- a/scripts/modules/_bpy_internal/assets/remote_library_listing/cli_listing_downloader.py
+++ b/scripts/modules/_bpy_internal/assets/remote_library_listing/cli_listing_downloader.py
@@ -18,7 +18,7 @@
 
 @dataclasses.dataclass
 class CLIArguments:
-    """Parsed commandline arguments."""
+    """Parsed command-line arguments."""
 
     url: str
 
diff --git a/scripts/modules/_bpy_internal/assets/remote_library_listing/http_metadata.py b/scripts/modules/_bpy_internal/assets/remote_library_listing/http_metadata.py
index 53fc2a2e33e..e46e5afa285 100644
--- a/scripts/modules/_bpy_internal/assets/remote_library_listing/http_metadata.py
+++ b/scripts/modules/_bpy_internal/assets/remote_library_listing/http_metadata.py
@@ -22,7 +22,7 @@ class ExtraFileMetadataProvider(http_dl.MetadataProvider):
 
     The downloader will get the request to download to `file-unsafe.json`.
     However, if `file.json` is still fresh (i.e. the HTTP metadata for the URL
-    is appliccable to that file), the downloader should be able to do a
+    is applicable to that file), the downloader should be able to do a
     conditional download (instead of an unconditional one).
 
     This is implemented as a wrapper for any other MetadataProvider, rather than
diff --git a/scripts/modules/_bpy_internal/assets/remote_library_listing/sync_mutex.py b/scripts/modules/_bpy_internal/assets/remote_library_listing/sync_mutex.py
index c8c728a02ac..ff9a49efc2e 100644
--- a/scripts/modules/_bpy_internal/assets/remote_library_listing/sync_mutex.py
+++ b/scripts/modules/_bpy_internal/assets/remote_library_listing/sync_mutex.py
@@ -31,7 +31,7 @@ def mutex_lock(local_library_path: Path) -> bool:
         - https://www.pythontutorials.net/blog/make-sure-only-a-single-instance-of-a-program-is-running/
         - https://yakking.branchable.com/posts/procrun-2-pidfiles/
 
-    :returns: true if the lock was created succesfully, false if some other
+    :returns: true if the lock was created successfully, false if some other
         Blender already locked this library.
     """
     global _registered_atexit
diff --git a/source/blender/asset_system/AS_remote_library.hh b/source/blender/asset_system/AS_remote_library.hh
index 6a1a61b4d22..c28d5225e94 100644
--- a/source/blender/asset_system/AS_remote_library.hh
+++ b/source/blender/asset_system/AS_remote_library.hh
@@ -173,7 +173,7 @@ class RemoteLibraryLoadingStatus {
    * given timeout duration. Changes the status to failure in that case.
    *
    * Note that this function doesn't do more than check if the timeout is reached, and changing
-   * state to failure if so. It's meant to be called in regular, short intervalls to make the whole
+   * state to failure if so. It's meant to be called in regular, short intervals to make the whole
    * timeout handling work. Current remote asset library loading takes care of this.
    *
    * \return True if the loading status switched to #Status::Failure due to timing out.
@@ -181,7 +181,7 @@ class RemoteLibraryLoadingStatus {
   static bool handle_timeout(StringRef url);
 
  private:
-  /** Update the last update time point, effectively resetting the timout timer. */
+  /** Update the last update time point, effectively resetting the time-out timer. */
   void reset_timeout();
 };
 
diff --git a/source/blender/asset_system/intern/library_types/remote_library.cc b/source/blender/asset_system/intern/library_types/remote_library.cc
index 0f4f555a24f..28d821b040d 100644
--- a/source/blender/asset_system/intern/library_types/remote_library.cc
+++ b/source/blender/asset_system/intern/library_types/remote_library.cc
@@ -88,12 +88,12 @@ void RemoteAssetLibrary::refresh_catalogs()
  * \{ */
 
 /*
- * Note: Some of the status setters here only modify status if the current status is
+ * NOTE: Some of the status setters here only modify status if the current status is
  * #RemoteLibraryLoadingStatus::Loading. That is done to avoid status changes after loading ended,
  * mostly after a timeout. E.g. after a timeout of the C++ status because Python didn't send status
  * updates, Python might eventually resume sending updates. These shouldn't affect the C++ status
  * anymore, since the earlier failure aborted the C++ side asset library loading. Plus, the UI
- * might show an error, and would suddenly switch to showing an incompletly loaded asset library.
+ * might show an error, and would suddenly switch to showing an incompletely loaded asset library.
  */
 
 using UrlToLibraryStatusMap = Map<std::string /*url*/, asset_system::RemoteLibraryLoadingStatus>;
diff --git a/source/blender/blenlib/tests/BLI_delaunay_2d_test.cc b/source/blender/blenlib/tests/BLI_delaunay_2d_test.cc
index a1723858f52..93b2b941022 100644
--- a/source/blender/blenlib/tests/BLI_delaunay_2d_test.cc
+++ b/source/blender/blenlib/tests/BLI_delaunay_2d_test.cc
@@ -1982,7 +1982,7 @@ template<typename T> void nonzero_winding_negative_only_test()
 
 /**
  * Stress test: overlapping rectangles with shared collinear edge segment.
- * Tests winding when one face's edge is a subsegment of another's edge.
+ * Tests winding when one face's edge is a sub-segment of another's edge.
  *
  * \code{.unparsed}
  * Geometry:
diff --git a/source/blender/bmesh/intern/bmesh_interp.cc b/source/blender/bmesh/intern/bmesh_interp.cc
index a9e43902fa9..593ab42d92e 100644
--- a/source/blender/bmesh/intern/bmesh_interp.cc
+++ b/source/blender/bmesh/intern/bmesh_interp.cc
@@ -921,7 +921,7 @@ void BM_data_layer_free(BMesh *bm, CustomData *data, int type)
   data->pool = nullptr;
 
   const bool had_layer = CustomData_free_layer_active(data, eCustomDataType(type));
-  /* Assert because its expensive to realloc - better not do if layer isn't present. */
+  /* Assert because its expensive to reallocate - better not do if layer isn't present. */
   BLI_assert(had_layer != false);
   UNUSED_VARS_NDEBUG(had_layer);
 
diff --git a/source/blender/draw/intern/draw_resource.hh b/source/blender/draw/intern/draw_resource.hh
index 3b60e9561cd..3136e93f888 100644
--- a/source/blender/draw/intern/draw_resource.hh
+++ b/source/blender/draw/intern/draw_resource.hh
@@ -66,7 +66,7 @@ inline void ObjectInfos::sync()
 {
   object_attrs_len = 0;
   object_attrs_offset = 0;
-  /* Zero-Initialize since this data might still be accesible (See #154105). */
+  /* Zero-Initialize since this data might still be accessible (See #154105). */
   orco_add = float3(0.0f);
   orco_mul = float3(0.0f);
   ob_color = float4(0.0f);
diff --git a/source/blender/editors/asset/intern/asset_index.hh b/source/blender/editors/asset/intern/asset_index.hh
index 6bcf7368c74..4e05f5f27d1 100644
--- a/source/blender/editors/asset/intern/asset_index.hh
+++ b/source/blender/editors/asset/intern/asset_index.hh
@@ -57,7 +57,7 @@ template<typename T = std::monostate> class ReadingResult {
   std::optional<T> success_value;
 
   /**
-   * Even when an operation was performed succesfully, there could have been
+   * Even when an operation was performed successfully, there could have been
    * warnings. These are only intended to be used on success status; on failure,
    * only `failure_reason` is expected to be set. On cancellation, no reason
    * needs to be given (as it is in response to the user cancelling the
diff --git a/source/blender/editors/gpencil_legacy/editaction_gpencil.cc b/source/blender/editors/gpencil_legacy/editaction_gpencil.cc
index b2d8a884fea..6f99a1c2be0 100644
--- a/source/blender/editors/gpencil_legacy/editaction_gpencil.cc
+++ b/source/blender/editors/gpencil_legacy/editaction_gpencil.cc
@@ -416,7 +416,7 @@ bool ED_gpencil_anim_copybuf_paste(bAnimContext *ac, const short offset_mode)
   ANIM_animdata_filter(
       ac, &anim_data, eAnimFilter_Flags(filter), ac->data, eAnimCont_Types(ac->datatype));
   if (BLI_listbase_is_empty(&anim_data)) {
-    /* If no cannels are selected at all, make even unselected layers "targets" for pasting. */
+    /* If no channels are selected at all, make even unselected layers "targets" for pasting. */
     filter = (ANIMFILTER_DATA_VISIBLE | ANIMFILTER_LIST_VISIBLE | ANIMFILTER_NODUPLIS |
               ANIMFILTER_FOREDIT);
     ANIM_animdata_filter(
diff --git a/source/blender/editors/interface/interface_handlers.cc b/source/blender/editors/interface/interface_handlers.cc
index 85cc77359e9..9594529111b 100644
--- a/source/blender/editors/interface/interface_handlers.cc
+++ b/source/blender/editors/interface/interface_handlers.cc
@@ -5083,8 +5083,8 @@ static int ui_do_but_TEX(
     else if (ELEM(event->type, WHEELUPMOUSE, WHEELDOWNMOUSE) && (event->modifier & KM_CTRL)) {
       if (but->type == ButtonType::SearchMenu) {
         /* Disable value cycling for search buttons. This causes issues because the search data is
-         * moved to the "afterfuncs", but search updating requires it again or somethimes this
-         * event can be triguered twice in row without the button being refreshed. See #147539 and
+         * moved to the `afterfuncs`, but search updating requires it again or sometimes this
+         * event can be triggered twice in row without the button being refreshed. See #147539 and
          * #152976. */
       }
       else {
diff --git a/source/blender/editors/sculpt_paint/mesh/sculpt_pose.cc b/source/blender/editors/sculpt_paint/mesh/sculpt_pose.cc
index 249291b1675..72daa1ca50d 100644
--- a/source/blender/editors/sculpt_paint/mesh/sculpt_pose.cc
+++ b/source/blender/editors/sculpt_paint/mesh/sculpt_pose.cc
@@ -1521,7 +1521,7 @@ static std::unique_ptr<IKChain> ik_chain_init_face_sets_bmesh(Object &object,
 
     if (!next_segment_data) {
       /* It is possible that when traversing neighbors that we no longer have any vertices that
-       * have not been assigned to a face set when trying to find the next segement's starting
+       * have not been assigned to a face set when trying to find the next segment's starting
        * point. All further segments are invalid in this case. */
       break;
     }
diff --git a/source/blender/editors/space_file/file_ops.cc b/source/blender/editors/space_file/file_ops.cc
index 0762b96fbda..144cd63919a 100644
--- a/source/blender/editors/space_file/file_ops.cc
+++ b/source/blender/editors/space_file/file_ops.cc
@@ -2968,7 +2968,7 @@ void file_directory_enter_handle(bContext *C, void * /*arg_unused*/, void *arg_b
 
   if (filelist_is_dir(sfile->files, params->dir)) {
     if (!STREQ(params->dir, filelist_dir(sfile->files))) {
-      /* Keep focus to allow Tab autocompletion. #150689. */
+      /* Keep focus to allow Tab auto-completion. #150689. */
       blender::ui::Button *but = static_cast<blender::ui::Button *>(arg_but);
       textbutton_activate_but(C, but);
       button_clear_selection(but);
diff --git a/source/blender/gpu/intern/gpu_shader_dead_code_elimination.hh b/source/blender/gpu/intern/gpu_shader_dead_code_elimination.hh
index 9ba3a5fd7dc..fb506297256 100644
--- a/source/blender/gpu/intern/gpu_shader_dead_code_elimination.hh
+++ b/source/blender/gpu/intern/gpu_shader_dead_code_elimination.hh
@@ -141,7 +141,7 @@ struct DeadCodeEliminator
     Token name_tok = prev(parenthesis_tok);
     /* WATCH(fclem): It could be that a line directive is put between the return type and the
      * function name (which would mess up the). This is currently not happening with the
-     * current codebase but might in the future. Checking for it would be quite expensive. */
+     * current code-base but might in the future. Checking for it would be quite expensive. */
     if (name_tok != TokenType::Word) {
       return;
     }
@@ -323,8 +323,8 @@ struct DeadCodeEliminator
 
   static StringRef str(const Token t)
   {
-    /* Note: Whitespaces where not merged (because of TokenizePreprocessor), so using
-     * str_view_with_whitespace will be faster.  */
+    /* NOTE: White-spaces where not merged (because of #TokenizePreprocessor),
+     * so using #str_view_with_whitespace will be faster. */
     return t.str_view_with_whitespace();
   }
 
diff --git a/source/blender/gpu/shader_tool/lexit/lexit.hh b/source/blender/gpu/shader_tool/lexit/lexit.hh
index 8a9ed3dd6e3..8aa04beef63 100644
--- a/source/blender/gpu/shader_tool/lexit/lexit.hh
+++ b/source/blender/gpu/shader_tool/lexit/lexit.hh
@@ -25,17 +25,17 @@ namespace lexit {
  */
 class TokenBuffer {
  protected:
-  /* Input string. */
+  /** Input string. */
   const uint8_t *str_;
-  /* Length of the input string without including null terminator. */
+  /** Length of the input string without including null terminator. */
   const uint32_t str_len_;
-  /* Type of each token. */
+  /** Type of each token. */
   TokenType *types_;
-  /* Starting character index of each token. */
+  /** Starting character index of each token. */
   uint32_t *offsets_;
-  /* Original character index of each next token before whitespace merging (optional). */
+  /** Original character index of each next token before white-space merging (optional). */
   uint32_t *original_offsets_;
-  /* Amount of tokens inside the buffer excluding the terminating EndOfFile token. */
+  /** Amount of tokens inside the buffer excluding the terminating EndOfFile token. */
   uint32_t size_;
 
  public:
diff --git a/source/blender/gpu/vulkan/vk_backend.cc b/source/blender/gpu/vulkan/vk_backend.cc
index 3650cc32162..9fe0e623714 100644
--- a/source/blender/gpu/vulkan/vk_backend.cc
+++ b/source/blender/gpu/vulkan/vk_backend.cc
@@ -502,7 +502,7 @@ void VKBackend::detect_workarounds(VKDevice &device)
    *
    * TODO: We should re-validate vertex input dynamic state as there are multiple vendors with
    * similar issues. It might be an oversight. Will wait for feedback from the driver developers
-   * and perfrom some out of bounds error checks.
+   * and perform some out of bounds error checks.
    */
   if (GPU_type_matches(GPU_DEVICE_QUALCOMM, GPU_OS_WIN, GPU_DRIVER_ANY)) {
     extensions.vertex_input_dynamic_state = false;
diff --git a/source/blender/windowmanager/WM_types.hh b/source/blender/windowmanager/WM_types.hh
index b4f83e789f7..58faadc9c6b 100644
--- a/source/blender/windowmanager/WM_types.hh
+++ b/source/blender/windowmanager/WM_types.hh
@@ -464,14 +464,17 @@ struct wmNotifier {
 /* NC_OBJECT Object. */
 #define ND_TRANSFORM (18 << 16)
 #define ND_OB_SHADING (19 << 16)
-/** For non-structural posemode changes like transforms. Note: renaming, selecting, bone
- * collections have their own dedicated notifiers, also see #ND_BONE_SELECT. */
+/**
+ * For non-structural pose-mode changes like transforms.
+ * \note renaming, selecting, bone collections have their own dedicated notifiers,
+ * also see #ND_BONE_SELECT.
+ */
 #define ND_POSE (20 << 16)
 #define ND_BONE_ACTIVE (21 << 16)
 /** Intended for selection and visibility changes in pose/armature edit modes.
- * Historically this was also used for most editmode changes (also "structural" like adding,
- * deleting, subdividing, filling, ..., bones). Also covers hiding/revealing (in posemode and
- * editmode). Note this causes a full (possibly slow) rebuild of the Outliner tree. For such
+ * Historically this was also used for most edit-mode changes (also "structural" like adding,
+ * deleting, subdividing, filling, ..., bones). Also covers hiding/revealing (in pose-mode and
+ * edit-mode). Note this causes a full (possibly slow) rebuild of the Outliner tree. For such
  * changes, new code should use #ND_ARMATURE_STRUCTURE. */
 #define ND_BONE_SELECT (22 << 16)
 /** Indicate a change to the structure of the armature; this has implications for both the armature
@@ -479,7 +482,7 @@ struct wmNotifier {
  *
  * The value is set to #ND_BONE_SELECT as a transitional state, as currently that notifier is
  * already used to signify such structural changes. In the future, those uses of #ND_BONE_SELECT
- * should be replaced with #ND_ARMATURE_STRUCTURE, making the selction notifier only relevant for
+ * should be replaced with #ND_ARMATURE_STRUCTURE, making the selection notifier only relevant for
  * selection again. See #153774. */
 #define ND_ARMATURE_STRUCTURE ND_BONE_SELECT
 #define ND_DRAW (23 << 16)
diff --git a/source/blender/windowmanager/intern/wm_surface.cc b/source/blender/windowmanager/intern/wm_surface.cc
index 81e553e1c58..7e04dac4a1d 100644
--- a/source/blender/windowmanager/intern/wm_surface.cc
+++ b/source/blender/windowmanager/intern/wm_surface.cc
@@ -79,7 +79,7 @@ void wm_surface_clear_drawable()
 
     g_drawable = nullptr;
 
-    /* Workaround: For surface drawing, the Userdef runtime DPI/pixelsize values are set to
+    /* Workaround: For surface drawing, the #UserDef runtime DPI/pixel-size values are set to
      * base constants in #wm_surface_constant_dpi_set_userpref called in #wm_surface_make_drawable.
      * This does not affect window rendering as #WM_window_dpi_set_userdef is called in
      * #wm_window_make_drawable. However, some handlers called before window re-draw (such as
diff --git a/tools/check_source/check_spelling_config.py b/tools/check_source/check_spelling_config.py
index 6030d9c14fc..b9b687fa7b4 100644
--- a/tools/check_source/check_spelling_config.py
+++ b/tools/check_source/check_spelling_config.py
@@ -922,6 +922,9 @@
     "source/blender/blenlib/intern/fnmatch.c",
     "source/blender/draw/intern/shaders/common_fxaa_lib.glsl",
     "source/blender/gpu/shaders/common/gpu_shader_smaa_lib.glsl",
+
+    # Contains `Lorem Ipsum`.
+    "source/blender/blenlib/tests/BLI_resource_strings.h",
 }
 
 # These contain many typos that could be resolved, then removed from this list.

Patch 3

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
diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php
index 8ed52a1de41d6..0f1ad3bd5d557 100644
--- a/apps/files_sharing/lib/Controller/ShareAPIController.php
+++ b/apps/files_sharing/lib/Controller/ShareAPIController.php
@@ -236,7 +236,7 @@ protected function formatShare(IShare $share, ?Node $recipientNode = null): arra
 		$expiration = $share->getExpirationDate();
 		if ($expiration !== null) {
 			$expiration->setTimezone($this->dateTimeZone->getTimeZone());
-			$result['expiration'] = $expiration->format('Y-m-d 00:00:00');
+			$result['expiration'] = $expiration->format('Y-m-d H:i:s');
 		}
 
 		if ($share->getShareType() === IShare::TYPE_USER) {
diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php
index 1d72ec63cb0ff..586a1ff9c0d88 100644
--- a/lib/private/Share20/Manager.php
+++ b/lib/private/Share20/Manager.php
@@ -302,7 +302,7 @@ protected function validateExpirationDateInternal(IShare $share): IShare {
 		if (!$share->getNoExpirationDate() || $isEnforced) {
 			if ($expirationDate !== null) {
 				$expirationDate->setTimezone($this->dateTimeZone->getTimeZone());
-				$expirationDate->setTime(0, 0, 0);
+				$expirationDate->setTime(23, 59, 59);
 
 				$date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
 				$date->setTime(0, 0, 0);
@@ -321,7 +321,7 @@ protected function validateExpirationDateInternal(IShare $share): IShare {
 
 			if ($fullId === null && $expirationDate === null && $defaultExpireDate) {
 				$expirationDate = new \DateTime('now', $this->dateTimeZone->getTimeZone());
-				$expirationDate->setTime(0, 0, 0);
+				$expirationDate->setTime(23, 59, 59);
 				$days = (int)$this->config->getAppValue('core', $configProp, (string)$defaultExpireDays);
 				if ($days > $defaultExpireDays) {
 					$days = $defaultExpireDays;
@@ -336,7 +336,7 @@ protected function validateExpirationDateInternal(IShare $share): IShare {
 				}
 
 				$date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
-				$date->setTime(0, 0, 0);
+				$date->setTime(23, 59, 59);
 				$date->add(new \DateInterval('P' . $defaultExpireDays . 'D'));
 				if ($date < $expirationDate) {
 					throw new GenericShareException($this->l->n('Cannot set expiration date more than %n day in the future', 'Cannot set expiration date more than %n days in the future', $defaultExpireDays), code: 404);
@@ -380,7 +380,7 @@ protected function validateExpirationDateLink(IShare $share): IShare {
 		if (!($share->getNoExpirationDate() && !$isEnforced)) {
 			if ($expirationDate !== null) {
 				$expirationDate->setTimezone($this->dateTimeZone->getTimeZone());
-				$expirationDate->setTime(0, 0, 0);
+				$expirationDate->setTime(23, 59, 59);
 
 				$date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
 				$date->setTime(0, 0, 0);
@@ -399,7 +399,7 @@ protected function validateExpirationDateLink(IShare $share): IShare {
 
 			if ($fullId === null && $expirationDate === null && $this->shareApiLinkDefaultExpireDate()) {
 				$expirationDate = new \DateTime('now', $this->dateTimeZone->getTimeZone());
-				$expirationDate->setTime(0, 0, 0);
+				$expirationDate->setTime(23, 59, 59);
 
 				$days = (int)$this->config->getAppValue('core', 'link_defaultExpDays', (string)$this->shareApiLinkDefaultExpireDays());
 				if ($days > $this->shareApiLinkDefaultExpireDays()) {
@@ -415,7 +415,7 @@ protected function validateExpirationDateLink(IShare $share): IShare {
 				}
 
 				$date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
-				$date->setTime(0, 0, 0);
+				$date->setTime(23, 59, 59);
 				$date->add(new \DateInterval('P' . $this->shareApiLinkDefaultExpireDays() . 'D'));
 				if ($date < $expirationDate) {
 					throw new GenericShareException(

Trending Tags