android/source/AndroidManifest.xml | 2 android/source/build.gradle | 4 android/source/gradle.properties | 2 android/source/res/layout/activity_document_browser.xml | 28 +++--- android/source/res/layout/activity_main.xml | 14 +-- android/source/res/layout/number_picker.xml | 4 android/source/res/layout/toolbar_bottom.xml | 2 android/source/res/layout/toolbar_color_picker.xml | 12 +- android/source/src/java/org/libreoffice/AboutDialogFragment.java | 4 android/source/src/java/org/libreoffice/ColorPaletteAdapter.java | 4 android/source/src/java/org/libreoffice/ColorPickerAdapter.java | 4 android/source/src/java/org/libreoffice/FontController.java | 6 - android/source/src/java/org/libreoffice/FormattingController.java | 4 android/source/src/java/org/libreoffice/LibreOfficeMainActivity.java | 10 +- android/source/src/java/org/libreoffice/PasswordDialogFragment.java | 6 - android/source/src/java/org/libreoffice/PresentationActivity.java | 8 - android/source/src/java/org/libreoffice/ToolbarController.java | 2 android/source/src/java/org/libreoffice/UNOCommandsController.java | 2 android/source/src/java/org/libreoffice/canvas/BitmapHandle.java | 2 android/source/src/java/org/libreoffice/overlay/CalcHeadersController.java | 2 android/source/src/java/org/libreoffice/overlay/CalcHeadersView.java | 2 android/source/src/java/org/libreoffice/ui/FileUtilities.java | 2 android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java | 23 ++--- android/source/src/java/org/libreoffice/ui/RecentFilesAdapter.java | 4 chart2/source/controller/dialogs/tp_Scale.cxx | 7 + configure.ac | 8 - i18npool/qa/cppunit/test_breakiterator.cxx | 4 include/sfx2/dialoghelper.hxx | 5 - officecfg/registry/schema/org/openoffice/Office/Common.xcs | 2 oox/source/export/shapes.cxx | 6 - sc/source/ui/miscdlgs/sharedocdlg.cxx | 6 - sd/qa/unit/data/odp/tdf109169_Diamond.odp |binary sd/qa/unit/data/odp/tdf109169_Octagon.odp |binary sd/qa/unit/export-tests-ooxml3.cxx | 46 ++++++++++ sfx2/source/dialog/dialoghelper.cxx | 8 - sfx2/source/dialog/versdlg.cxx | 8 - slideshow/source/engine/activities/simplecontinuousactivitybase.cxx | 12 +- sw/qa/extras/ooxmlexport/data/tdf148494.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport17.cxx | 12 ++ sw/source/filter/ww8/ww8atr.cxx | 4 sw/source/ui/fldui/flddok.cxx | 13 ++ sw/source/uibase/utlui/content.cxx | 2 ucb/source/ucp/webdav-curl/CurlSession.cxx | 20 +++- vcl/source/filter/itiff/itiff.cxx | 4 44 files changed, 208 insertions(+), 112 deletions(-)
New commits: commit 0d622b07d78fe61eacc3a32bdfc973808d7b9829 Author: Michael Weghorn <[email protected]> AuthorDate: Thu Apr 14 09:34:28 2022 +0200 Commit: Michael Weghorn <[email protected]> CommitDate: Tue Apr 19 08:41:13 2022 +0200 android: Use proper Intent to open doc for API level < 19 `Intent.ACTION_OPEN_DOCUMENT` was introduced in API level 19, therefore `Intent.ACTION_GET_CONTENT` is supposed to be used for older Android versions. The previous attempt at doing so didn't work, since no `ActivityNotFoundException` is thrown when trying to set the action to `Intent.ACTION_OPEN_DOCUMENT` on older Android versions. Fix that by using a proper version check instead. Change-Id: Ie06fa3f39e3042b4b7161a3c937bf655eb658abd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133025 Tested-by: Jenkins Reviewed-by: Michael Weghorn <[email protected]> (cherry picked from commit 003e2873e4463974e59e1f909f9250cde743851f) diff --git a/android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java b/android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java index c18b784e581b..f2e366c90ed3 100644 --- a/android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java +++ b/android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java @@ -258,9 +258,10 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings private void showSystemFilePickerAndOpenFile() { Intent intent = new Intent(); - try { + if (Build.VERSION.SDK_INT >= 19) { intent.setAction(Intent.ACTION_OPEN_DOCUMENT); - } catch (ActivityNotFoundException exception) { + } + else { // Intent.ACTION_OPEN_DOCUMENT added in API level 19, but minSdkVersion is currently 16 intent.setAction(Intent.ACTION_GET_CONTENT); } commit 752c1b4e078594edb724240a9ecfa3b7efa766ff Author: Michael Weghorn <[email protected]> AuthorDate: Thu Apr 14 17:17:04 2022 +0200 Commit: Michael Weghorn <[email protected]> CommitDate: Tue Apr 19 08:41:04 2022 +0200 android: Use "ContentResolver#query" available from API level 1 Use the `ContentResolver#query` overload that is available from Android API level 1 on, not the one that's only available from API level 26 on [2], which would otherwise trigger an exception if run on devices running Android version < 8.0, as seen on an AVD with API level 21: > E/AndroidRuntime( 2914): FATAL EXCEPTION: main > E/AndroidRuntime( 2914): Process: org.libreoffice, PID: 2914 > E/AndroidRuntime( 2914): java.lang.NoSuchMethodError: No virtual method query(Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/database/Cursor; in class Landroid/content/ContentResolver; or its super classes (declaration of 'android.content.ContentResolver' appears in /system/framework/framework.jar) > E/AndroidRuntime( 2914): at org.libreoffice.ui.FileUtilities.retrieveDisplayNameForDocumentUri(FileUtilities.java:137) > E/AndroidRuntime( 2914): at org.libreoffice.ui.LibreOfficeUIActivity.createUI(LibreOfficeUIActivity.java:206) > E/AndroidRuntime( 2914): at org.libreoffice.ui.LibreOfficeUIActivity.onCreate(LibreOfficeUIActivity.java:147) > E/AndroidRuntime( 2914): at android.app.Activity.performCreate(Activity.java:5937) > E/AndroidRuntime( 2914): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) > E/AndroidRuntime( 2914): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) > E/AndroidRuntime( 2914): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) > E/AndroidRuntime( 2914): at android.app.ActivityThread.access$800(ActivityThread.java:144) > E/AndroidRuntime( 2914): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) > E/AndroidRuntime( 2914): at android.os.Handler.dispatchMessage(Handler.java:102) > E/AndroidRuntime( 2914): at android.os.Looper.loop(Looper.java:135) > E/AndroidRuntime( 2914): at android.app.ActivityThread.main(ActivityThread.java:5221) > E/AndroidRuntime( 2914): at java.lang.reflect.Method.invoke(Native Method) > E/AndroidRuntime( 2914): at java.lang.reflect.Method.invoke(Method.java:372) > E/AndroidRuntime( 2914): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) > E/AndroidRuntime( 2914): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) > [1] https://developer.android.com/reference/android/content/ContentResolver#query(android.net.Uri,%20java.lang.String[],%20java.lang.String,%20java.lang.String[],%20java.lang.String) [2] https://developer.android.com/reference/android/content/ContentResolver#query(android.net.Uri,%20java.lang.String[],%20android.os.Bundle,%20android.os.CancellationSignal) Change-Id: I13ecc57d3d6b25a7eb2e5ff85a3420ef8064cb20 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133024 Tested-by: Jenkins Reviewed-by: Michael Weghorn <[email protected]> (cherry picked from commit f869807175f1fc49328465473aa8e90b6f1876ff) diff --git a/android/source/src/java/org/libreoffice/ui/FileUtilities.java b/android/source/src/java/org/libreoffice/ui/FileUtilities.java index 5bfb93b4c1f5..72da47b8cc3a 100644 --- a/android/source/src/java/org/libreoffice/ui/FileUtilities.java +++ b/android/source/src/java/org/libreoffice/ui/FileUtilities.java @@ -134,7 +134,7 @@ public class FileUtilities { Cursor cursor = null; try { String[] columns = {OpenableColumns.DISPLAY_NAME}; - cursor = resolver.query(docUri, columns, null, null); + cursor = resolver.query(docUri, columns, null, null, null); if (cursor != null && cursor.moveToFirst()) { displayName = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)); } commit 3b27f0843ca4b46f1ffa072687a66210017bb33d Author: Michael Weghorn <[email protected]> AuthorDate: Thu Apr 14 11:29:27 2022 +0200 Commit: Michael Weghorn <[email protected]> CommitDate: Tue Apr 19 08:40:55 2022 +0200 android: Port from Android Support Lib to AndroidX Replace the no longer maintained Android Support Library with the Android Jetpack libraries. Quoting [1]: > Version 28.0.0 is the last release of the Support Library. There will be > no more android.support library releases. All new feature development > will be in the androidx namespace. Most porting was done automatically by using Android Studio's "Refactor" -> "Migrate to AndroidX..." function. In `android/source/res/layout/toolbar_bottom.xml` and `android/source/res/layout/toolbar_color_picker.xml`, the uses of `app:layout_behavior="android.support.design.widget.BottomSheetBehavior"` had to be replaced manually as described at [2], because the app would crash when using the old "android.support" values. Also drop the Android Support Library related bits from configure.ac In a quick test, this worked fine and no obvious difference was visible when running this in various AVDs. When trying to test this in an x86 AVD still using SDK 16 (Android 4.1), which is currently specified as Android Viewer's `minSdkVersion`, only various unrelated issues showed up, some of which will be handled in follow-up commits. After the migration, many weird errors showed up in Android Studio, which disappeared after invalidating the caches (via "File" -> "Invalidate Caches..."). [1] https://developer.android.com/jetpack/androidx [2] https://stackoverflow.com/questions/45100963/runtimeexception-could-not-inflate-behavior-subclass Change-Id: I2a57f0ebd56e7ecc09b7d65aae17fd15088a633b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133002 Tested-by: Jenkins Reviewed-by: Michael Weghorn <[email protected]> (cherry picked from commit 70cb4955f1c099b030567e6bf4702f7dc6ee521a) diff --git a/android/source/AndroidManifest.xml b/android/source/AndroidManifest.xml index 987aeed66ae6..43f790fca985 100644 --- a/android/source/AndroidManifest.xml +++ b/android/source/AndroidManifest.xml @@ -116,7 +116,7 @@ </activity> <provider - android:name="android.support.v4.content.FileProvider" + android:name="androidx.core.content.FileProvider" android:authorities="${applicationId}.fileprovider" android:exported="false" android:grantUriPermissions="true"> diff --git a/android/source/build.gradle b/android/source/build.gradle index a690749ff0ee..7dc93e778a7c 100644 --- a/android/source/build.gradle +++ b/android/source/build.gradle @@ -27,8 +27,8 @@ dependencies { "libreoffice.jar", "unoloader.jar" ]) - implementation 'com.android.support:design:27.1.1' // also pulls-in corresponding support libraries - implementation 'com.android.support.constraint:constraint-layout:1.1.2' + implementation 'com.google.android.material:material:1.0.0' + implementation 'androidx.constraintlayout:constraintlayout:1.1.3' } android { diff --git a/android/source/gradle.properties b/android/source/gradle.properties index ad1671ef57fd..414d53485e7f 100644 --- a/android/source/gradle.properties +++ b/android/source/gradle.properties @@ -1 +1,3 @@ +android.enableJetifier=true +android.useAndroidX=true org.gradle.jvmargs=-Xmx3072m diff --git a/android/source/res/layout/activity_document_browser.xml b/android/source/res/layout/activity_document_browser.xml index 559d92efbb38..1632770d97a8 100644 --- a/android/source/res/layout/activity_document_browser.xml +++ b/android/source/res/layout/activity_document_browser.xml @@ -6,7 +6,7 @@ License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. --> -<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" @@ -14,7 +14,7 @@ android:orientation="vertical"> <!-- The toolbar --> - <android.support.v7.widget.Toolbar + <androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" android:layout_width="0dp" android:layout_height="wrap_content" @@ -30,10 +30,10 @@ app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent"> - </android.support.v7.widget.Toolbar> + </androidx.appcompat.widget.Toolbar> - <android.support.v4.widget.DrawerLayout + <androidx.drawerlayout.widget.DrawerLayout android:id="@+id/drawer_layout" android:layout_width="0dp" android:layout_height="0dp" @@ -47,7 +47,7 @@ app:layout_constraintLeft_toLeftOf="parent"> <!-- The content --> - <android.support.v4.widget.NestedScrollView + <androidx.core.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent"> @@ -99,7 +99,7 @@ android:textStyle="bold" /> <!--Recent files--> - <android.support.v7.widget.RecyclerView + <androidx.recyclerview.widget.RecyclerView android:id="@+id/list_recent" android:layout_width="match_parent" android:layout_height="wrap_content" @@ -108,13 +108,13 @@ </LinearLayout> - </android.support.v4.widget.NestedScrollView> + </androidx.core.widget.NestedScrollView> <!-- The navigation drawer --> - </android.support.v4.widget.DrawerLayout> + </androidx.drawerlayout.widget.DrawerLayout> - <android.support.design.widget.FloatingActionButton + <com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/editFAB" android:layout_width="wrap_content" android:layout_height="wrap_content" @@ -144,7 +144,7 @@ android:layout_marginTop="@dimen/new_doc_fab_tweak_top" android:text="@string/new_textdocument" /> - <android.support.design.widget.FloatingActionButton + <com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/newWriterFAB" android:layout_width="wrap_content" android:layout_height="wrap_content" @@ -176,7 +176,7 @@ android:layout_marginTop="@dimen/new_doc_fab_tweak_top" android:text="@string/new_presentation" /> - <android.support.design.widget.FloatingActionButton + <com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/newImpressFAB" android:layout_width="wrap_content" android:layout_height="wrap_content" @@ -208,7 +208,7 @@ android:layout_marginTop="@dimen/new_doc_fab_tweak_top" android:text="@string/new_spreadsheet" /> - <android.support.design.widget.FloatingActionButton + <com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/newCalcFAB" android:layout_width="wrap_content" android:layout_height="wrap_content" @@ -240,7 +240,7 @@ android:layout_marginTop="@dimen/new_doc_fab_tweak_top" android:text="@string/new_drawing" /> - <android.support.design.widget.FloatingActionButton + <com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/newDrawFAB" android:layout_width="wrap_content" android:layout_height="wrap_content" @@ -254,4 +254,4 @@ </LinearLayout> -</android.support.constraint.ConstraintLayout> +</androidx.constraintlayout.widget.ConstraintLayout> diff --git a/android/source/res/layout/activity_main.xml b/android/source/res/layout/activity_main.xml index c2528023d0f8..bd444f9fe79f 100644 --- a/android/source/res/layout/activity_main.xml +++ b/android/source/res/layout/activity_main.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<android.support.v4.widget.DrawerLayout android:id="@+id/drawer_layout" +<androidx.drawerlayout.widget.DrawerLayout android:id="@+id/drawer_layout" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" @@ -8,7 +8,7 @@ android:background="#fff" tools:context=".LibreOfficeMainActivity"> - <android.support.design.widget.CoordinatorLayout + <androidx.coordinatorlayout.widget.CoordinatorLayout android:id="@+id/coordinator_layout" android:layout_width="match_parent" android:layout_height="match_parent"> @@ -18,12 +18,12 @@ android:layout_height="match_parent" android:orientation="vertical"> - <android.support.design.widget.AppBarLayout + <com.google.android.material.appbar.AppBarLayout android:id="@+id/appBar" android:layout_width="match_parent" android:layout_height="wrap_content"> - <android.support.v7.widget.Toolbar + <androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" @@ -33,7 +33,7 @@ tools:theme="@style/LibreOfficeTheme.Toolbar" app:popupTheme="@style/LibreOfficeTheme" /> - </android.support.design.widget.AppBarLayout> + </com.google.android.material.appbar.AppBarLayout> <LinearLayout android:layout_width="match_parent" @@ -133,7 +133,7 @@ android:layout_width="match_parent" android:layout_height="match_parent"/> - </android.support.design.widget.CoordinatorLayout> + </androidx.coordinatorlayout.widget.CoordinatorLayout> <ListView android:id="@+id/left_drawer" @@ -143,4 +143,4 @@ android:background="#9FFF" android:choiceMode="singleChoice"/> -</android.support.v4.widget.DrawerLayout> +</androidx.drawerlayout.widget.DrawerLayout> diff --git a/android/source/res/layout/number_picker.xml b/android/source/res/layout/number_picker.xml index 51463926c70f..32eea0e80a84 100644 --- a/android/source/res/layout/number_picker.xml +++ b/android/source/res/layout/number_picker.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" @@ -127,4 +127,4 @@ android:background="@drawable/image_button_background" app:layout_constraintEnd_toEndOf="@+id/numberpickerLayout" app:layout_constraintTop_toBottomOf="@+id/number_picker_rows_positive" /> -</android.support.constraint.ConstraintLayout> \ No newline at end of file +</androidx.constraintlayout.widget.ConstraintLayout> diff --git a/android/source/res/layout/toolbar_bottom.xml b/android/source/res/layout/toolbar_bottom.xml index f4b3f3c5f8cc..7d420f35cbca 100644 --- a/android/source/res/layout/toolbar_bottom.xml +++ b/android/source/res/layout/toolbar_bottom.xml @@ -13,7 +13,7 @@ app:popupTheme="@style/LibreOfficeTheme.Toolbar" app:theme="@style/LibreOfficeTheme.Toolbar" tools:showIn="@layout/activity_main" - app:layout_behavior="android.support.design.widget.BottomSheetBehavior" + app:layout_behavior="@string/bottom_sheet_behavior" app:behavior_hideable="true" app:behavior_peekHeight="0dp"> diff --git a/android/source/res/layout/toolbar_color_picker.xml b/android/source/res/layout/toolbar_color_picker.xml index 9393259123be..e80f25bf46f6 100644 --- a/android/source/res/layout/toolbar_color_picker.xml +++ b/android/source/res/layout/toolbar_color_picker.xml @@ -12,7 +12,7 @@ app:popupTheme="@style/LibreOfficeTheme.Toolbar" app:theme="@style/LibreOfficeTheme.Toolbar" tools:showIn="@layout/activity_main" - app:layout_behavior="android.support.design.widget.BottomSheetBehavior" + app:layout_behavior="@string/bottom_sheet_behavior" app:behavior_hideable="true" app:behavior_peekHeight="0dp"> @@ -29,15 +29,15 @@ android:background="@drawable/image_button_background" android:layout_marginBottom="10dp"/> - <android.support.v7.widget.RecyclerView + <androidx.recyclerview.widget.RecyclerView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/fontColorView" > - </android.support.v7.widget.RecyclerView> + </androidx.recyclerview.widget.RecyclerView> - <android.support.v7.widget.RecyclerView + <androidx.recyclerview.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/fontColorViewSub" @@ -45,11 +45,11 @@ android:layout_below="@id/fontColorView" android:layout_alignParentBottom="true"> - </android.support.v7.widget.RecyclerView> + </androidx.recyclerview.widget.RecyclerView> </LinearLayout> -</LinearLayout> \ No newline at end of file +</LinearLayout> diff --git a/android/source/src/java/org/libreoffice/AboutDialogFragment.java b/android/source/src/java/org/libreoffice/AboutDialogFragment.java index b8e22077e928..9695d1e9d650 100644 --- a/android/source/src/java/org/libreoffice/AboutDialogFragment.java +++ b/android/source/src/java/org/libreoffice/AboutDialogFragment.java @@ -18,8 +18,8 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.v4.app.DialogFragment; +import androidx.annotation.NonNull; +import androidx.fragment.app.DialogFragment; import android.text.Html; import android.text.Spanned; import android.text.method.LinkMovementMethod; diff --git a/android/source/src/java/org/libreoffice/ColorPaletteAdapter.java b/android/source/src/java/org/libreoffice/ColorPaletteAdapter.java index 6ec6aa138f66..41aed46ca915 100644 --- a/android/source/src/java/org/libreoffice/ColorPaletteAdapter.java +++ b/android/source/src/java/org/libreoffice/ColorPaletteAdapter.java @@ -1,7 +1,7 @@ package org.libreoffice; import android.content.Context; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -128,4 +128,4 @@ public class ColorPaletteAdapter extends RecyclerView.Adapter<ColorPaletteAdapte } -} \ No newline at end of file +} diff --git a/android/source/src/java/org/libreoffice/ColorPickerAdapter.java b/android/source/src/java/org/libreoffice/ColorPickerAdapter.java index c93d5a01bbb4..89b9b9044033 100644 --- a/android/source/src/java/org/libreoffice/ColorPickerAdapter.java +++ b/android/source/src/java/org/libreoffice/ColorPickerAdapter.java @@ -3,7 +3,7 @@ package org.libreoffice; import android.content.Context; import android.content.res.Resources; import android.graphics.Color; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -163,4 +163,4 @@ public class ColorPickerAdapter extends RecyclerView.Adapter<ColorPickerAdapter. this.colorBox = itemView.findViewById(R.id.fontColorBox); } } -} \ No newline at end of file +} diff --git a/android/source/src/java/org/libreoffice/FontController.java b/android/source/src/java/org/libreoffice/FontController.java index 8729b51e01ac..8b7f232ac65c 100644 --- a/android/source/src/java/org/libreoffice/FontController.java +++ b/android/source/src/java/org/libreoffice/FontController.java @@ -2,9 +2,9 @@ package org.libreoffice; import android.graphics.Color; import android.graphics.Rect; -import android.support.design.widget.BottomSheetBehavior; -import android.support.v7.widget.GridLayoutManager; -import android.support.v7.widget.RecyclerView; +import com.google.android.material.bottomsheet.BottomSheetBehavior; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; diff --git a/android/source/src/java/org/libreoffice/FormattingController.java b/android/source/src/java/org/libreoffice/FormattingController.java index 9259b2ea6cae..4527583d503c 100644 --- a/android/source/src/java/org/libreoffice/FormattingController.java +++ b/android/source/src/java/org/libreoffice/FormattingController.java @@ -11,8 +11,8 @@ import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Environment; import android.provider.MediaStore; -import android.support.design.widget.Snackbar; -import android.support.v4.content.FileProvider; +import com.google.android.material.snackbar.Snackbar; +import androidx.core.content.FileProvider; import android.util.Log; import android.view.LayoutInflater; import android.view.View; diff --git a/android/source/src/java/org/libreoffice/LibreOfficeMainActivity.java b/android/source/src/java/org/libreoffice/LibreOfficeMainActivity.java index 5ce176716d66..dec1cb3649c2 100644 --- a/android/source/src/java/org/libreoffice/LibreOfficeMainActivity.java +++ b/android/source/src/java/org/libreoffice/LibreOfficeMainActivity.java @@ -15,11 +15,11 @@ import android.os.Build; import android.os.Bundle; import android.preference.PreferenceManager; import android.provider.DocumentsContract; -import android.support.design.widget.BottomSheetBehavior; -import android.support.design.widget.Snackbar; -import android.support.v4.widget.DrawerLayout; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; +import com.google.android.material.bottomsheet.BottomSheetBehavior; +import com.google.android.material.snackbar.Snackbar; +import androidx.drawerlayout.widget.DrawerLayout; +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; import android.text.InputType; import android.util.Log; import android.view.KeyEvent; diff --git a/android/source/src/java/org/libreoffice/PasswordDialogFragment.java b/android/source/src/java/org/libreoffice/PasswordDialogFragment.java index 112e35c4b7ed..08bc7f596894 100644 --- a/android/source/src/java/org/libreoffice/PasswordDialogFragment.java +++ b/android/source/src/java/org/libreoffice/PasswordDialogFragment.java @@ -4,9 +4,9 @@ import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.app.DialogFragment; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.DialogFragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/android/source/src/java/org/libreoffice/PresentationActivity.java b/android/source/src/java/org/libreoffice/PresentationActivity.java index 0fd3950f55d4..ede7c0c40101 100644 --- a/android/source/src/java/org/libreoffice/PresentationActivity.java +++ b/android/source/src/java/org/libreoffice/PresentationActivity.java @@ -1,16 +1,14 @@ package org.libreoffice; import android.content.Intent; -import android.os.Build; import android.os.Bundle; -import android.support.annotation.Nullable; -import android.support.v4.view.GestureDetectorCompat; -import android.support.v7.app.AppCompatActivity; +import androidx.annotation.Nullable; +import androidx.core.view.GestureDetectorCompat; +import androidx.appcompat.app.AppCompatActivity; import android.view.GestureDetector; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; -import android.view.WindowManager; import android.webkit.WebView; import android.widget.Button; import android.widget.ImageButton; diff --git a/android/source/src/java/org/libreoffice/ToolbarController.java b/android/source/src/java/org/libreoffice/ToolbarController.java index c97d84f0f329..f0fbb139484d 100644 --- a/android/source/src/java/org/libreoffice/ToolbarController.java +++ b/android/source/src/java/org/libreoffice/ToolbarController.java @@ -11,7 +11,7 @@ package org.libreoffice; import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; -import android.support.v7.widget.Toolbar; +import androidx.appcompat.widget.Toolbar; import android.util.Log; import android.view.KeyEvent; import android.view.Menu; diff --git a/android/source/src/java/org/libreoffice/UNOCommandsController.java b/android/source/src/java/org/libreoffice/UNOCommandsController.java index 5834f7e07001..cba67732cce1 100644 --- a/android/source/src/java/org/libreoffice/UNOCommandsController.java +++ b/android/source/src/java/org/libreoffice/UNOCommandsController.java @@ -8,7 +8,7 @@ package org.libreoffice; import android.content.DialogInterface; -import android.support.v7.app.AlertDialog; +import androidx.appcompat.app.AlertDialog; import android.text.method.ScrollingMovementMethod; import android.view.View; import android.widget.EditText; diff --git a/android/source/src/java/org/libreoffice/canvas/BitmapHandle.java b/android/source/src/java/org/libreoffice/canvas/BitmapHandle.java index e46173db518f..51f6f7cf8611 100644 --- a/android/source/src/java/org/libreoffice/canvas/BitmapHandle.java +++ b/android/source/src/java/org/libreoffice/canvas/BitmapHandle.java @@ -5,7 +5,7 @@ import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.RectF; import android.graphics.drawable.Drawable; -import android.support.v4.content.ContextCompat; +import androidx.core.content.ContextCompat; /** * Bitmap handle canvas element is used to show a handle on the screen. diff --git a/android/source/src/java/org/libreoffice/overlay/CalcHeadersController.java b/android/source/src/java/org/libreoffice/overlay/CalcHeadersController.java index 40c9ddcd8cea..8b99c292cbc5 100644 --- a/android/source/src/java/org/libreoffice/overlay/CalcHeadersController.java +++ b/android/source/src/java/org/libreoffice/overlay/CalcHeadersController.java @@ -4,7 +4,7 @@ import android.content.Context; import android.graphics.PointF; import android.graphics.RectF; import android.graphics.drawable.ColorDrawable; -import android.support.design.widget.Snackbar; +import com.google.android.material.snackbar.Snackbar; import android.util.Log; import android.view.KeyEvent; import android.view.Gravity; diff --git a/android/source/src/java/org/libreoffice/overlay/CalcHeadersView.java b/android/source/src/java/org/libreoffice/overlay/CalcHeadersView.java index a8b2d2048409..c099410cd240 100644 --- a/android/source/src/java/org/libreoffice/overlay/CalcHeadersView.java +++ b/android/source/src/java/org/libreoffice/overlay/CalcHeadersView.java @@ -4,7 +4,7 @@ import android.content.Context; import android.graphics.Canvas; import android.graphics.PointF; import android.graphics.RectF; -import android.support.v4.view.GestureDetectorCompat; +import androidx.core.view.GestureDetectorCompat; import android.util.AttributeSet; import android.view.GestureDetector.SimpleOnGestureListener; import android.view.MotionEvent; diff --git a/android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java b/android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java index 110123f54acf..c18b784e581b 100644 --- a/android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java +++ b/android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java @@ -23,15 +23,15 @@ import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.preference.PreferenceManager; -import android.support.design.widget.FloatingActionButton; -import android.support.v4.app.ActivityCompat; -import android.support.v4.content.ContextCompat; -import android.support.v4.view.ViewCompat; -import android.support.v7.app.ActionBar; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.GridLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.support.v7.widget.Toolbar; +import com.google.android.material.floatingactionbutton.FloatingActionButton; +import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; +import androidx.core.view.ViewCompat; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.appcompat.widget.Toolbar; import android.text.TextUtils; import android.util.Log; import android.view.Menu; diff --git a/android/source/src/java/org/libreoffice/ui/RecentFilesAdapter.java b/android/source/src/java/org/libreoffice/ui/RecentFilesAdapter.java index 6011035c1610..ef00b9fb6cfd 100644 --- a/android/source/src/java/org/libreoffice/ui/RecentFilesAdapter.java +++ b/android/source/src/java/org/libreoffice/ui/RecentFilesAdapter.java @@ -9,8 +9,8 @@ package org.libreoffice.ui; -import android.support.v4.content.ContextCompat; -import android.support.v7.widget.RecyclerView; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/configure.ac b/configure.ac index dab4326616b0..4cd279ab6b53 100644 --- a/configure.ac +++ b/configure.ac @@ -1214,14 +1214,6 @@ if test "$_os" = "Android" ; then add_warning " $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION" add_warning "or adjust $SRC_ROOT/android/source/build.gradle accordingly" fi - if test ! -f "$ANDROID_SDK_HOME/extras/android/m2repository/source.properties"; then - AC_MSG_WARN([android support repository not found - install with - $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository - to allow the build to download the specified version of the android support libraries]) - add_warning "android support repository not found - install with" - add_warning " $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository" - add_warning "to allow the build to download the specified version of the android support libraries" - fi fi if test "$_os" = "AIX"; then commit b4759ef679aa74a6c5c72368e493b184d25702b0 Merge: c60b1a4f728f b51e9f32410d Author: Michael Weghorn <[email protected]> AuthorDate: Tue Apr 19 08:40:20 2022 +0200 Commit: Michael Weghorn <[email protected]> CommitDate: Tue Apr 19 08:40:20 2022 +0200 Merge branch 'libreoffice-7-3' into distro/lhm/libreoffice-7-3+backports Change-Id: I5dddfbc45dfbff00b703221269b36182e5f9cc8a commit b51e9f32410d346a9b5cba1bf3e6a485e17f119d Author: Regina Henschel <[email protected]> AuthorDate: Fri Apr 15 15:04:16 2022 +0200 Commit: Xisco Fauli <[email protected]> CommitDate: Mon Apr 18 13:28:09 2022 +0200 tdf#109169 use custGeom for Octagon Bevel shape The shapes 'Octagon Bevel', type col_60da8460, and 'Diamond Bevel', type col-502ad400, are LO specific preset shapes. They have neither a counterpart in MS binary nor in OOXML. So they need to be exported with custGeom. To force custGeom these shape types are moved from vDenylist to vAllowlist. These shapes were exported as prst='rect' before. Change-Id: I9619345812b6dba8f14ec2cc6a92ae808a56b595 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133069 Tested-by: Jenkins Reviewed-by: Regina Henschel <[email protected]> Signed-off-by: Xisco Fauli <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133113 diff --git a/oox/source/export/shapes.cxx b/oox/source/export/shapes.cxx index 97d09ca1be2e..5f0f04bf6bda 100644 --- a/oox/source/export/shapes.cxx +++ b/oox/source/export/shapes.cxx @@ -551,8 +551,6 @@ static bool lcl_IsOnDenylist(OUString const & rShapeType) u"flower", u"bracket-pair", u"brace-pair", - u"col-60da8460", - u"col-502ad400", u"quad-bevel", u"round-rectangular-callout", u"rectangular-callout", @@ -605,7 +603,9 @@ static bool lcl_IsOnAllowlist(OUString const & rShapeType) { static const std::initializer_list<std::u16string_view> vAllowlist = { u"heart", - u"puzzle" + u"puzzle", + u"col-60da8460", + u"col-502ad400" }; return std::find(vAllowlist.begin(), vAllowlist.end(), rShapeType) != vAllowlist.end(); diff --git a/sd/qa/unit/data/odp/tdf109169_Diamond.odp b/sd/qa/unit/data/odp/tdf109169_Diamond.odp new file mode 100644 index 000000000000..cd6a18d1b318 Binary files /dev/null and b/sd/qa/unit/data/odp/tdf109169_Diamond.odp differ diff --git a/sd/qa/unit/data/odp/tdf109169_Octagon.odp b/sd/qa/unit/data/odp/tdf109169_Octagon.odp new file mode 100644 index 000000000000..f35e746f3b28 Binary files /dev/null and b/sd/qa/unit/data/odp/tdf109169_Octagon.odp differ diff --git a/sd/qa/unit/export-tests-ooxml3.cxx b/sd/qa/unit/export-tests-ooxml3.cxx index 40031977345d..96642cdc73ec 100644 --- a/sd/qa/unit/export-tests-ooxml3.cxx +++ b/sd/qa/unit/export-tests-ooxml3.cxx @@ -11,6 +11,7 @@ #include "sdmodeltestbase.hxx" #include <comphelper/propertysequence.hxx> #include <comphelper/sequence.hxx> +#include <comphelper/sequenceashashmap.hxx> #include <editeng/eeitem.hxx> #include <editeng/editobj.hxx> #include <editeng/outlobj.hxx> @@ -34,6 +35,7 @@ #include <com/sun/star/awt/Rectangle.hpp> #include <com/sun/star/drawing/EnhancedCustomShapeParameterPair.hpp> #include <com/sun/star/drawing/EnhancedCustomShapeAdjustmentValue.hpp> +#include <com/sun/star/drawing/EnhancedCustomShapeParameterPair.hpp> #include <com/sun/star/drawing/FillStyle.hpp> #include <com/sun/star/style/LineSpacing.hpp> #include <com/sun/star/style/LineSpacingMode.hpp> @@ -126,6 +128,8 @@ public: void testTdf147121(); void testTdf140912_PicturePlaceholder(); void testEnhancedPathViewBox(); + void testTdf109169_OctagonBevel(); + void testTdf109169_DiamondBevel(); CPPUNIT_TEST_SUITE(SdOOXMLExportTest3); @@ -202,6 +206,8 @@ public: CPPUNIT_TEST(testTdf147121); CPPUNIT_TEST(testTdf140912_PicturePlaceholder); CPPUNIT_TEST(testEnhancedPathViewBox); + CPPUNIT_TEST(testTdf109169_OctagonBevel); + CPPUNIT_TEST(testTdf109169_DiamondBevel); CPPUNIT_TEST_SUITE_END(); virtual void registerNamespaces(xmlXPathContextPtr& pXmlXPathCtx) override @@ -1912,6 +1918,46 @@ void SdOOXMLExportTest3::testEnhancedPathViewBox() CPPUNIT_ASSERT_EQUAL(sal_Int32(2045), aBoundRectangle.Width); } +void SdOOXMLExportTest3::testTdf109169_OctagonBevel() +{ + // The document has a shape 'Octagon Bevel'. It consists of an octagon with 8 points and eight + // facets with 4 points each, total 8+8*4=40 points. Without the patch it was exported as + // rectangle and thus had 4 points. + ::sd::DrawDocShellRef xDocShRef + = loadURL(m_directories.getURLFromSrc(u"sd/qa/unit/data/odp/tdf109169_Octagon.odp"), ODP); + xDocShRef = saveAndReload(xDocShRef.get(), PPTX); + + auto xPropSet(getShapeFromPage(0, 0, xDocShRef)); + auto aGeomPropSeq = xPropSet->getPropertyValue("CustomShapeGeometry") + .get<uno::Sequence<beans::PropertyValue>>(); + comphelper::SequenceAsHashMap aCustomShapeGeometry(aGeomPropSeq); + auto aPathSeq((aCustomShapeGeometry["Path"]).get<uno::Sequence<beans::PropertyValue>>()); + comphelper::SequenceAsHashMap aPath(aPathSeq); + auto aCoordinates( + (aPath["Coordinates"]).get<uno::Sequence<drawing::EnhancedCustomShapeParameterPair>>()); + CPPUNIT_ASSERT_EQUAL(sal_Int32(40), aCoordinates.getLength()); +} + +void SdOOXMLExportTest3::testTdf109169_DiamondBevel() +{ + // The document has a shape 'Diamond Bevel'. It consists of a diamond with 4 points and four + // facets with 4 points each, total 4+4*4=20 points. Without the patch it was exported as + // rectangle and thus had 4 points. + ::sd::DrawDocShellRef xDocShRef + = loadURL(m_directories.getURLFromSrc(u"sd/qa/unit/data/odp/tdf109169_Diamond.odp"), ODP); + xDocShRef = saveAndReload(xDocShRef.get(), PPTX); + + auto xPropSet(getShapeFromPage(0, 0, xDocShRef)); + auto aGeomPropSeq = xPropSet->getPropertyValue("CustomShapeGeometry") + .get<uno::Sequence<beans::PropertyValue>>(); + comphelper::SequenceAsHashMap aCustomShapeGeometry(aGeomPropSeq); + auto aPathSeq((aCustomShapeGeometry["Path"]).get<uno::Sequence<beans::PropertyValue>>()); + comphelper::SequenceAsHashMap aPath(aPathSeq); + auto aCoordinates( + (aPath["Coordinates"]).get<uno::Sequence<drawing::EnhancedCustomShapeParameterPair>>()); + CPPUNIT_ASSERT_EQUAL(sal_Int32(20), aCoordinates.getLength()); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SdOOXMLExportTest3); CPPUNIT_PLUGIN_IMPLEMENT(); commit 1af0bf010b839b7b34e856dfc5a7385db45c9aa7 Author: Julien Nabet <[email protected]> AuthorDate: Sun Apr 17 20:03:26 2022 +0200 Commit: Xisco Fauli <[email protected]> CommitDate: Mon Apr 18 13:03:43 2022 +0200 tdf#142151: Red cast rendered in 16 bit TIFF image I found this fix by testing "pure" red/green/blue files (see attachments in the bugtracker) where red 16 bits file was ok but not green and blue 16 bits ones. Change-Id: Ic700a0fa17c3056d1d4f1d1a7f16a799ff4c7378 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133108 (cherry picked from commit 49ee1c889665c3539fa9a1c99a865a42fc08ee97) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133051 Reviewed-by: Mike Kaganski <[email protected]> Tested-by: Jenkins diff --git a/vcl/source/filter/itiff/itiff.cxx b/vcl/source/filter/itiff/itiff.cxx index ae797aa978a5..25c8af8b6582 100644 --- a/vcl/source/filter/itiff/itiff.cxx +++ b/vcl/source/filter/itiff/itiff.cxx @@ -912,8 +912,8 @@ bool TIFFReader::ConvertScanline(sal_Int32 nY) if ( nPlanes < 3 ) { nRed = GetBits( getMapData(0), ( nx * nSamplesPerPixel + 0 ) * nBitsPerSample, nBitsPerSample ); - nGreen = GetBits( getMapData(1), ( nx * nSamplesPerPixel + 1 ) * nBitsPerSample, nBitsPerSample ); - nBlue = GetBits( getMapData(2), ( nx * nSamplesPerPixel + 2 ) * nBitsPerSample, nBitsPerSample ); + nGreen = GetBits( getMapData(0), ( nx * nSamplesPerPixel + 1 ) * nBitsPerSample, nBitsPerSample ); + nBlue = GetBits( getMapData(0), ( nx * nSamplesPerPixel + 2 ) * nBitsPerSample, nBitsPerSample ); } else { commit 911d7c3336f07a4ea49bb539bf1bd35f11eea2a0 Author: Vasily Melenchuk <[email protected]> AuthorDate: Wed Apr 13 20:19:35 2022 +0300 Commit: Thorsten Behrens <[email protected]> CommitDate: Sun Apr 17 00:12:30 2022 +0200 tdf#148551: sw ui: set default format value for Insert Field dlg My previous implementation was changing current format selection only for field edit dialog. However it should be initialized also for insert field dlg. It is not always first element. Instead of older confusing approach right now there is a switch to set defaults: it is less confusing IMO. Change-Id: I189339ba66effc49267004a42345a28892cb693c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132980 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <[email protected]> (cherry picked from commit b2b821715a3745718a941fa99dda92137c0f0c86) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133045 diff --git a/sw/source/ui/fldui/flddok.cxx b/sw/source/ui/fldui/flddok.cxx index fba96e93cb4a..3bd1b4f5dea1 100644 --- a/sw/source/ui/fldui/flddok.cxx +++ b/sw/source/ui/fldui/flddok.cxx @@ -471,6 +471,19 @@ sal_Int32 SwFieldDokPage::FillFormatLB(SwFieldTypesEnum nTypeId) { m_xFormatLB->select_id(OUString::number(GetCurField()->GetFormat() & ~AF_FIXED)); } + else + { + // Select default selected value for "Insert" dialog + switch (nTypeId) + { + case SwFieldTypesEnum::PageNumber: + case SwFieldTypesEnum::DocumentStatistics: + m_xFormatLB->select_text(SwResId(FMT_NUM_PAGEDESC)); + break; + default: + m_xFormatLB->select(0); + } + } FormatHdl(*m_xFormatLB); commit 69d621d833fc9999fe76156c1e078ba24c5bb1c0 Author: Rene Engelhard <[email protected]> AuthorDate: Fri Apr 15 08:38:52 2022 +0200 Commit: Eike Rathke <[email protected]> CommitDate: Sat Apr 16 22:36:37 2022 +0200 apply ICU test workaround to < 70 to "fix" test with ICU 71 See also 263961306ede0656ebb7904034a2172615ce81d0 Change-Id: Ib64ec43dba59ffddb34fe7f1a0f0d2e589c3455c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133063 Tested-by: René Engelhard <[email protected]> Reviewed-by: Eike Rathke <[email protected]> (cherry picked from commit 67c577c692faaa0382d26c3c3f47b5ffa9deaa77) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133046 Tested-by: Jenkins diff --git a/i18npool/qa/cppunit/test_breakiterator.cxx b/i18npool/qa/cppunit/test_breakiterator.cxx index b74ff4222be4..cdcbff9be535 100644 --- a/i18npool/qa/cppunit/test_breakiterator.cxx +++ b/i18npool/qa/cppunit/test_breakiterator.cxx @@ -856,11 +856,11 @@ void TestBreakIterator::testLao() i18n::WordType::DICTIONARY_WORD, true); CPPUNIT_ASSERT_EQUAL(sal_Int32(5), aBounds.startPos); -#if (U_ICU_VERSION_MAJOR_NUM != 70) +#if (U_ICU_VERSION_MAJOR_NUM < 70) CPPUNIT_ASSERT_EQUAL(sal_Int32(9), aBounds.endPos); #else // FIXME: - // In ICU 70 for yet unknown reason the word boundary 9 is not detected and + // In ICU 70/71 for yet unknown reason the word boundary 9 is not detected and // instead the length 12 is returned as endpos. // Deep in // icu_70::RuleBasedBreakIterator::BreakCache::next() commit a24a97f7d3ae88d81df3341bfc4296ab4a7237fb Author: Caolán McNamara <[email protected]> AuthorDate: Sat Apr 16 12:29:37 2022 +0100 Commit: Adolfo Jayme Barrientos <[email protected]> CommitDate: Sat Apr 16 21:52:02 2022 +0200 Resolves: tdf#148197 crash on launching context menu with no row selected Change-Id: I4b05e6013ec4fb8f3968484a59c2dacf1e1c97ee Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133047 Tested-by: Jenkins Reviewed-by: Adolfo Jayme Barrientos <[email protected]> diff --git a/sw/source/uibase/utlui/content.cxx b/sw/source/uibase/utlui/content.cxx index 7e197dafdd67..4985e4f2075e 100644 --- a/sw/source/uibase/utlui/content.cxx +++ b/sw/source/uibase/utlui/content.cxx @@ -1934,7 +1934,7 @@ IMPL_LINK(SwContentTree, CommandHdl, const CommandEvent&, rCEvt, bool) xPop->remove("footnotetracking"); bool bSetSensitiveCollapseAllCategories = false; - if (!m_bIsRoot) + if (!m_bIsRoot && xEntry) { bool bEntry = m_xTreeView->get_iter_first(*xEntry); while (bEntry) commit dfacd800395b95837a24a1f33267b46f96efd5de Author: Xisco Fauli <[email protected]> AuthorDate: Fri Apr 15 17:55:21 2022 +0200 Commit: Adolfo Jayme Barrientos <[email protected]> CommitDate: Sat Apr 16 20:41:51 2022 +0200 tdf#148494: export: Always add space separator Otherwise, the macro is saved as MACROBUTTONAllCaps instead of MACROBUTTON AllCaps Change-Id: Id1288e23f21ce72884bc1197f171e255ea7458f5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133077 Tested-by: Jenkins Reviewed-by: Xisco Fauli <[email protected]> Signed-off-by: Xisco Fauli <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133082 Reviewed-by: Adolfo Jayme Barrientos <[email protected]> diff --git a/sw/qa/extras/ooxmlexport/data/tdf148494.docx b/sw/qa/extras/ooxmlexport/data/tdf148494.docx new file mode 100644 index 000000000000..c60c73a206fb Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf148494.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport17.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport17.cxx index 51f0d9fb9345..c0b693247828 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport17.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport17.cxx @@ -68,6 +68,18 @@ CPPUNIT_TEST_FIXTURE(Test, testParaStyleNumLevel) assertXPath(pXmlDoc, "/w:styles/w:style[@w:styleId='Mystyle']/w:pPr/w:numPr/w:ilvl", "val", "1"); } +CPPUNIT_TEST_FIXTURE(Test, testTdf148494) +{ + loadAndSave("tdf148494.docx"); + + xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml"); + + // Without the fix in place, this test would have failed with + // - Expected: MACROBUTTON AllCaps Hello World + // - Actual : MACROBUTTONAllCaps Hello World + assertXPathContent(pXmlDoc, "/w:document/w:body/w:p/w:r[3]/w:instrText", " MACROBUTTON AllCaps Hello World "); +} + DECLARE_OOXMLEXPORT_TEST(testTdf137466, "tdf137466.docx") { xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml"); diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx index cbafa7a909a0..8d5ac4e888fa 100644 --- a/sw/source/filter/ww8/ww8atr.cxx +++ b/sw/source/filter/ww8/ww8atr.cxx @@ -3312,8 +3312,8 @@ void AttributeOutputBase::TextField( const SwFormatField& rField ) break; case SwFieldIds::Macro: { - const OUString sStr = " MACROBUTTON" - + pField->GetPar1().replaceFirst("StarOffice.Standard.Modul1.", " ") + const OUString sStr = " MACROBUTTON " + + pField->GetPar1().replaceFirst("StarOffice.Standard.Modul1.", "") + " " + lcl_GetExpandedField(*pField); GetExport().OutputField( pField, ww::eMACROBUTTON, sStr ); commit 01c5006db900e3911e6bf8cb7abc2935e8215ded Author: Thorsten Behrens <[email protected]> AuthorDate: Thu Apr 14 12:01:50 2022 +0200 Commit: Xisco Fauli <[email protected]> CommitDate: Fri Apr 15 18:05:46 2022 +0200 Resolves: tdf#143615 clamp relative times to 1.0 User input permits zero-length animations, so whenever we calculate relative position within the animation time frame, the case mnMinSimpleDuration == 0.0 means: we're already at the end of the animation, i.e. set relative time to 1.0 Change-Id: I0e8c1e29f47bd9fa16f04115cf52d3a176e13fb0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133005 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <[email protected]> (cherry picked from commit e1db8c27875eac73b1e619e4a23ecdb7a9924b61) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133038 Reviewed-by: Xisco Fauli <[email protected]> diff --git a/slideshow/source/engine/activities/simplecontinuousactivitybase.cxx b/slideshow/source/engine/activities/simplecontinuousactivitybase.cxx index 9e23fc2c76c8..01cb3b75007b 100644 --- a/slideshow/source/engine/activities/simplecontinuousactivitybase.cxx +++ b/slideshow/source/engine/activities/simplecontinuousactivitybase.cxx @@ -63,9 +63,12 @@ namespace slideshow::internal // perform will be called at least mnMinNumberOfTurns // times. - // fraction of time elapsed + // fraction of time elapsed (clamp to 1.0 for zero-length + // animations) const double nFractionElapsedTime( - nCurrElapsedTime / mnMinSimpleDuration ); + mnMinSimpleDuration != 0.0 ? + nCurrElapsedTime / mnMinSimpleDuration : + 1.0 ); // fraction of minimum calls performed const double nFractionRequiredCalls( @@ -115,7 +118,10 @@ namespace slideshow::internal // =============================== const double nCurrElapsedTime( maTimer.getElapsedTime() ); - double nT( nCurrElapsedTime / mnMinSimpleDuration ); + // clamp to 1.0 for zero animation duration + double nT( mnMinSimpleDuration != 0.0 ? + nCurrElapsedTime / mnMinSimpleDuration : + 1.0 ); // one of the stop criteria reached? commit 75893fb99173f615d9fa40b50dfba147d22967b4 Author: Caolán McNamara <[email protected]> AuthorDate: Wed Apr 13 17:09:01 2022 +0100 Commit: Caolán McNamara <[email protected]> CommitDate: Thu Apr 14 16:36:56 2022 +0200 Resolves: tdf#148122 Celtic MD font appears wrong Change-Id: Ib551f073b8ea0e0662660ccf01ebf56c2fd7f340 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132868 Reviewed-by: Michael Stahl <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/officecfg/registry/schema/org/openoffice/Office/Common.xcs b/officecfg/registry/schema/org/openoffice/Office/Common.xcs index 0c7b9d1741a3..72ba024f8bc3 100644 --- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs +++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs @@ -5581,6 +5581,8 @@ </desc> </info> <value> + <!-- tdf#148122 Celtic MD font appears wrong --> + <it>Celticmd,1571,-567,1571,-547,2126,559</it> <!-- DIN Light (ttf version) has odd metrics. The otf version works fine. --> <it>DIN Light,1509,-503,1509,-483,1997,483</it> </value> commit 6b54e6a8e64233de63b826211b81a8ed6767483f Author: Michael Stahl <[email protected]> AuthorDate: Wed Apr 13 16:50:30 2022 +0200 Commit: Thorsten Behrens <[email protected]> CommitDate: Thu Apr 14 11:26:15 2022 +0200 ucb: webdav-curl: only allow system credentials for auth once ... and in any case abort authentication after 10 failed attempts. Apparently some PasswordContainer can turn this into an infinite loop. Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132974 Tested-by: Jenkins Reviewed-by: Michael Stahl <[email protected]> (cherry picked from commit 2bc4d1d22fdbd9d97c66bb53762b4b4bf7b61b47) ucb: webdav-curl: oops, increment after checking Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132982 Reviewed-by: Michael Stahl <[email protected]> Tested-by: Jenkins (cherry picked from commit ab65a74998b498ff49c15db87fc14a9afa89d8bf) Change-Id: Ib2333b371a770999e8407ce7e1af21512aadb70d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132867 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <[email protected]> diff --git a/ucb/source/ucp/webdav-curl/CurlSession.cxx b/ucb/source/ucp/webdav-curl/CurlSession.cxx index 70f9f828467d..813988c78489 100644 --- a/ucb/source/ucp/webdav-curl/CurlSession.cxx +++ b/ucb/source/ucp/webdav-curl/CurlSession.cxx @@ -1223,6 +1223,8 @@ auto CurlProcessor::ProcessRequest( } } bool isRetry(false); + int nAuthRequests(0); + int nAuthRequestsProxy(0); // libcurl does not have an authentication callback so handle auth // related status codes and requesting credentials via this loop @@ -1365,7 +1367,14 @@ auto CurlProcessor::ProcessRequest( case SC_UNAUTHORIZED: case SC_PROXY_AUTHENTICATION_REQUIRED: { - if (pEnv && pEnv->m_xAuthListener) + auto& rnAuthRequests(statusCode == SC_UNAUTHORIZED ? nAuthRequests + : nAuthRequestsProxy); + if (rnAuthRequests == 10) + { + SAL_INFO("ucb.ucp.webdav.curl", "aborting authentication after " + << rnAuthRequests << " attempts"); + } + else if (pEnv && pEnv->m_xAuthListener) { ::std::optional<OUString> const oRealm(ExtractRealm( headers, statusCode == SC_UNAUTHORIZED ? "WWW-Authenticate" @@ -1383,7 +1392,14 @@ auto CurlProcessor::ProcessRequest( &authAvail); assert(rc == CURLE_OK); (void)rc; - bool const isSystemCredSupported((authAvail & authSystem) != 0); + // only allow SystemCredentials once - the + // PasswordContainer may have stored it in the + // Config (TrySystemCredentialsFirst or + // AuthenticateUsingSystemCredentials) and then it + // will always force its use no matter how hopeless + bool const isSystemCredSupported((authAvail & authSystem) != 0 + && rnAuthRequests == 0); + ++rnAuthRequests; // Ask user via XInteractionHandler. // Warning: This likely runs an event loop which may commit 5d9ba65897d2ba2998e43e97b25dbb9a560a16a1 Author: Caolán McNamara <[email protected]> AuthorDate: Wed Apr 13 16:49:27 2022 +0100 Commit: Adolfo Jayme Barrientos <[email protected]> CommitDate: Thu Apr 14 11:12:44 2022 +0200 Resolves: tdf#141625 give enough space to see full date+time Change-Id: I31193783231f27494ed1507faa143697e8facc30 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132987 Tested-by: Jenkins Reviewed-by: Adolfo Jayme Barrientos <[email protected]> diff --git a/chart2/source/controller/dialogs/tp_Scale.cxx b/chart2/source/controller/dialogs/tp_Scale.cxx index 6c7effde6707..3bb247a7075b 100644 --- a/chart2/source/controller/dialogs/tp_Scale.cxx +++ b/chart2/source/controller/dialogs/tp_Scale.cxx @@ -26,6 +26,7 @@ #include <svx/svxids.hrc> #include <osl/diagnose.h> +#include <sfx2/dialoghelper.hxx> #include <svx/chrtitem.hxx> #include <svl/eitem.hxx> #include <svl/intitem.hxx> @@ -558,6 +559,12 @@ void ScaleTabPage::SetNumFormat() nFmt = pNumFormatter->GetStandardFormat( SvNumFormatType::TIME, pFormat->GetLanguage() ); else nFmt = pNumFormatter->GetStandardFormat( SvNumFormatType::TIME ); + + // tdf#141625 give enough space to see full date+time + int nWidestTime(m_xFmtFldMin->get_pixel_size(getWidestDateTime(Application::GetSettings().GetLocaleDataWrapper(), true)).Width()); + int nWidthChars = std::ceil(nWidestTime / m_xFmtFldMin->get_approximate_digit_width()) + 1; + m_xFmtFldMin->set_width_chars(nWidthChars); + m_xFmtFldMax->set_width_chars(nWidthChars); } if( m_nAxisType == chart2::AxisType::DATE && ( eType != SvNumFormatType::DATE && eType != SvNumFormatType::DATETIME) ) diff --git a/include/sfx2/dialoghelper.hxx b/include/sfx2/dialoghelper.hxx index e76304ac6808..a853d5d9de5c 100644 --- a/include/sfx2/dialoghelper.hxx +++ b/include/sfx2/dialoghelper.hxx @@ -31,9 +31,10 @@ Size SFX2_DLLPUBLIC getPreviewStripSize(const OutputDevice& rReference); Size SFX2_DLLPUBLIC getPreviewOptionsSize(const OutputDevice& rReference); -OUString SFX2_DLLPUBLIC getWidestTime(const LocaleDataWrapper& rWrapper); +OUString SFX2_DLLPUBLIC getWidestDateTime(const LocaleDataWrapper& rWrapper, bool bWithSec); -OUString SFX2_DLLPUBLIC formatTime(const DateTime& rDateTime, const LocaleDataWrapper& rWrapper); +OUString SFX2_DLLPUBLIC formatDateTime(const DateTime& rDateTime, const LocaleDataWrapper& rWrapper, + bool bWithSec); #endif diff --git a/sc/source/ui/miscdlgs/sharedocdlg.cxx b/sc/source/ui/miscdlgs/sharedocdlg.cxx index ec019fb70655..294a69e93c2b 100644 --- a/sc/source/ui/miscdlgs/sharedocdlg.cxx +++ b/sc/source/ui/miscdlgs/sharedocdlg.cxx @@ -39,7 +39,7 @@ using namespace ::com::sun::star; IMPL_LINK(ScShareDocumentDlg, SizeAllocated, const Size&, rSize, void) { - OUString sWidestAccessString = getWidestTime(ScGlobal::getLocaleData()); + OUString sWidestAccessString = getWidestDateTime(ScGlobal::getLocaleData(), false); const int nAccessWidth = m_xLbUsers->get_pixel_size(sWidestAccessString).Width() * 2; std::vector<int> aWidths { @@ -151,7 +151,7 @@ void ScShareDocumentDlg::UpdateView() tools::Time aTime( nHours, nMinutes ); DateTime aDateTime( aDate, aTime ); - OUString aString = formatTime(aDateTime, ScGlobal::getLocaleData()); + OUString aString = formatDateTime(aDateTime, ScGlobal::getLocaleData(), false); m_xLbUsers->append_text(aUser); m_xLbUsers->set_text(m_xLbUsers->n_children() - 1, aString, 1); @@ -201,7 +201,7 @@ void ScShareDocumentDlg::UpdateView() util::DateTime uDT(xDocProps->getModificationDate()); DateTime aDateTime(uDT); - OUString aString = formatTime(aDateTime, ScGlobal::getLocaleData()) + " " + + OUString aString = formatDateTime(aDateTime, ScGlobal::getLocaleData(), false) + " " + ScGlobal::getLocaleData().getTime( aDateTime, false ); m_xLbUsers->append_text(aUser); diff --git a/sfx2/source/dialog/dialoghelper.cxx b/sfx2/source/dialog/dialoghelper.cxx index 93e697b29517..9585c8baac80 100644 --- a/sfx2/source/dialog/dialoghelper.cxx +++ b/sfx2/source/dialog/dialoghelper.cxx @@ -32,17 +32,17 @@ Size getPreviewOptionsSize(const OutputDevice& rReference) return rReference.LogicToPixel(Size(70, 27), MapMode(MapUnit::MapAppFont)); } -OUString getWidestTime(const LocaleDataWrapper& rWrapper) +OUString getWidestDateTime(const LocaleDataWrapper& rWrapper, bool bWithSec) { Date aDate(22, 12, 2000); tools::Time aTime(22, 59, 59); DateTime aDateTime(aDate, aTime); - return formatTime(aDateTime, rWrapper); + return formatDateTime(aDateTime, rWrapper, bWithSec); } -OUString formatTime(const DateTime& rDateTime, const LocaleDataWrapper& rWrapper) +OUString formatDateTime(const DateTime& rDateTime, const LocaleDataWrapper& rWrapper, bool bWithSec) { - return rWrapper.getDate(rDateTime) + " " + rWrapper.getTime(rDateTime, false); + return rWrapper.getDate(rDateTime) + " " + rWrapper.getTime(rDateTime, bWithSec); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sfx2/source/dialog/versdlg.cxx b/sfx2/source/dialog/versdlg.cxx index 6de0d866c30b..53ea62b0eccd 100644 --- a/sfx2/source/dialog/versdlg.cxx +++ b/sfx2/source/dialog/versdlg.cxx @@ -115,7 +115,7 @@ namespace void setColSizes(weld::TreeView& rVersionBox) { // recalculate the datetime column width - int nWidestTime(rVersionBox.get_pixel_size(getWidestTime(Application::GetSettings().GetLocaleDataWrapper())).Width()); + int nWidestTime(rVersionBox.get_pixel_size(getWidestDateTime(Application::GetSettings().GetLocaleDataWrapper(), false)).Width()); int nW1 = rVersionBox.get_pixel_size(rVersionBox.get_column_title(1)).Width(); int nMax = std::max(nWidestTime, nW1) + 12; // max width + a little offset @@ -217,7 +217,7 @@ void SfxVersionDialog::Init_Impl() for (size_t n = 0; n < m_pTable->size(); ++n) { SfxVersionInfo *pInfo = m_pTable->at( n ); - OUString aEntry = formatTime(pInfo->aCreationDate, Application::GetSettings().GetLocaleDataWrapper()); + OUString aEntry = formatDateTime(pInfo->aCreationDate, Application::GetSettings().GetLocaleDataWrapper(), false); m_xVersionBox->append(OUString::number(reinterpret_cast<sal_Int64>(pInfo)), aEntry); auto nLastRow = m_xVersionBox->n_children() - 1; m_xVersionBox->set_text(nLastRow, pInfo->aAuthor, 1); @@ -394,7 +394,7 @@ SfxViewVersionDialog_Impl::SfxViewVersionDialog_Impl(weld::Window *pParent, SfxV OUString sAuthor = rInfo.aAuthor.isEmpty() ? SfxResId(STR_NO_NAME_SET) : rInfo.aAuthor; const LocaleDataWrapper& rLocaleWrapper( Application::GetSettings().GetLocaleDataWrapper() ); - m_xDateTimeText->set_label(m_xDateTimeText->get_label() + formatTime(rInfo.aCreationDate, rLocaleWrapper)); + m_xDateTimeText->set_label(m_xDateTimeText->get_label() + formatDateTime(rInfo.aCreationDate, rLocaleWrapper, false)); m_xSavedByText->set_label(m_xSavedByText->get_label() + sAuthor); m_xEdit->set_text(rInfo.aComment); m_xEdit->set_size_request(40 * m_xEdit->get_approximate_digit_width(), @@ -459,7 +459,7 @@ void SfxCmisVersionsDialog::LoadVersions() for (size_t n = 0; n < m_pTable->size(); ++n) { SfxVersionInfo *pInfo = m_pTable->at( n ); - OUString aEntry = formatTime(pInfo->aCreationDate, Application::GetSettings().GetLocaleDataWrapper()); + OUString aEntry = formatDateTime(pInfo->aCreationDate, Application::GetSettings().GetLocaleDataWrapper(), false); m_xVersionBox->append(OUString::number(reinterpret_cast<sal_Int64>(pInfo)), aEntry); auto nLastRow = m_xVersionBox->n_children() - 1; m_xVersionBox->set_text(nLastRow, pInfo->aAuthor, 1);
