mirror of
https://github.com/aphrody-labs/cef.git
synced 2026-10-14 13:19:26 +00:00
win: dxil.dll is no longer distributed mac: Xcode 27 (macOS 26.6+) is now required
137 lines
4.7 KiB
Diff
137 lines
4.7 KiB
Diff
diff --git printing/printing_context_linux.cc printing/printing_context_linux.cc
|
|
index 5c555d8768e2a1d9e6ac86fc9392420a42f5193d..9d343a47c7896569b3ba4de67fbed50e3007be0c 100644
|
|
--- printing/printing_context_linux.cc
|
|
+++ printing/printing_context_linux.cc
|
|
@@ -88,8 +88,8 @@ mojom::ResultCode PrintingContextLinux::UseDefaultSettings() {
|
|
}
|
|
|
|
gfx::Size PrintingContextLinux::GetPdfPaperSizeDeviceUnits() {
|
|
- if (ui::LinuxUi::instance()) {
|
|
- return ui::LinuxUi::instance()->GetPdfPaperSize(this);
|
|
+ if (ui::PrintingContextLinuxDelegate::instance()) {
|
|
+ return ui::PrintingContextLinuxDelegate::instance()->GetPdfPaperSize(this);
|
|
}
|
|
|
|
return gfx::Size();
|
|
diff --git ui/linux/BUILD.gn ui/linux/BUILD.gn
|
|
index 655012d45653c443bd3a769d31bcf0b4c025ac80..726cbc53babef62e92ad1f4b94d7c49e653ba933 100644
|
|
--- ui/linux/BUILD.gn
|
|
+++ ui/linux/BUILD.gn
|
|
@@ -4,6 +4,7 @@
|
|
|
|
import("//build/config/features.gni")
|
|
import("//build/config/linux/gtk/gtk.gni")
|
|
+import("//printing/buildflags/buildflags.gni")
|
|
import("//ui/qt/qt.gni")
|
|
|
|
assert(is_linux)
|
|
@@ -36,6 +37,11 @@ component("linux_ui") {
|
|
"//ui/display/types",
|
|
"//ui/gfx/geometry",
|
|
]
|
|
+
|
|
+ if (enable_printing) {
|
|
+ deps += [ "//printing/mojom" ]
|
|
+ }
|
|
+
|
|
public_deps = [ "//printing/buildflags" ]
|
|
}
|
|
|
|
diff --git ui/linux/linux_ui.cc ui/linux/linux_ui.cc
|
|
index 010672d309694991f50e208a4e965f9b1ce84801..6f8764480a6e069f4d82cc31d81193102dec975d 100644
|
|
--- ui/linux/linux_ui.cc
|
|
+++ ui/linux/linux_ui.cc
|
|
@@ -20,6 +20,7 @@ namespace ui {
|
|
namespace {
|
|
|
|
LinuxUi* g_linux_ui = nullptr;
|
|
+static PrintingContextLinuxDelegate* g_delegate = nullptr;
|
|
|
|
base::RepeatingClosureList& GetAnimationsEnabledCallbackList() {
|
|
static base::NoDestructor<base::RepeatingClosureList> s_callbacks;
|
|
@@ -28,8 +29,25 @@ base::RepeatingClosureList& GetAnimationsEnabledCallbackList() {
|
|
|
|
} // namespace
|
|
|
|
+// static
|
|
+PrintingContextLinuxDelegate* PrintingContextLinuxDelegate::SetInstance(
|
|
+ PrintingContextLinuxDelegate* delegate) {
|
|
+ auto old_delegate = g_delegate;
|
|
+ g_delegate = delegate;
|
|
+ return old_delegate;
|
|
+}
|
|
+
|
|
+// static
|
|
+PrintingContextLinuxDelegate* PrintingContextLinuxDelegate::instance() {
|
|
+ return g_delegate;
|
|
+}
|
|
+
|
|
// static
|
|
LinuxUi* LinuxUi::SetInstance(LinuxUi* instance) {
|
|
+#if BUILDFLAG(IS_LINUX) && BUILDFLAG(ENABLE_PRINTING)
|
|
+ PrintingContextLinuxDelegate::SetInstance(instance);
|
|
+#endif
|
|
+
|
|
LinuxUi* old_instance = std::exchange(g_linux_ui, instance);
|
|
if (old_instance != instance) {
|
|
GetAnimationsEnabledCallbackList().Notify();
|
|
diff --git ui/linux/linux_ui.h ui/linux/linux_ui.h
|
|
index 84c76516ba2758ab4e7ffad71a9622560edde448..91bcf4e7973d39c575110064cb460fbb313310d0 100644
|
|
--- ui/linux/linux_ui.h
|
|
+++ ui/linux/linux_ui.h
|
|
@@ -23,6 +23,10 @@
|
|
#include "printing/buildflags/buildflags.h"
|
|
#include "ui/display/types/display_config.h"
|
|
|
|
+#if BUILDFLAG(ENABLE_PRINTING)
|
|
+#include "printing/printing_context_linux.h" // nogncheck
|
|
+#endif
|
|
+
|
|
// The main entrypoint into Linux toolkit specific code. GTK/QT code should only
|
|
// be executed behind this interface.
|
|
|
|
@@ -63,9 +67,27 @@ class WindowFrameProvider;
|
|
enum class FrameType;
|
|
enum class TextEditCommand;
|
|
|
|
+class COMPONENT_EXPORT(LINUX_UI) PrintingContextLinuxDelegate {
|
|
+ public:
|
|
+ virtual ~PrintingContextLinuxDelegate() = default;
|
|
+
|
|
+ virtual std::unique_ptr<printing::PrintDialogLinuxInterface> CreatePrintDialog(
|
|
+ printing::PrintingContextLinux* context) = 0;
|
|
+
|
|
+ virtual gfx::Size GetPdfPaperSize(printing::PrintingContextLinux* context) = 0;
|
|
+
|
|
+ static PrintingContextLinuxDelegate* SetInstance(
|
|
+ PrintingContextLinuxDelegate* delegate);
|
|
+ static PrintingContextLinuxDelegate* instance();
|
|
+};
|
|
+
|
|
// Adapter class with targets to render like different toolkits. Set by any
|
|
// project that wants to do linux desktop native rendering.
|
|
-class COMPONENT_EXPORT(LINUX_UI) LinuxUi {
|
|
+class COMPONENT_EXPORT(LINUX_UI) LinuxUi
|
|
+#if BUILDFLAG(ENABLE_PRINTING)
|
|
+ : public PrintingContextLinuxDelegate
|
|
+#endif
|
|
+ {
|
|
public:
|
|
// 8px is the default value in GTK for how far the mouse needs to move before
|
|
// a drag begins.
|
|
@@ -166,14 +188,6 @@ class COMPONENT_EXPORT(LINUX_UI) LinuxUi {
|
|
// Returns a map of KeyboardEvent code to KeyboardEvent key values.
|
|
virtual base::flat_map<std::string, std::string> GetKeyboardLayoutMap() = 0;
|
|
|
|
-#if BUILDFLAG(ENABLE_PRINTING)
|
|
- virtual std::unique_ptr<printing::PrintDialogLinuxInterface>
|
|
- CreatePrintDialog(printing::PrintingContextLinux* context) = 0;
|
|
-
|
|
- virtual gfx::Size GetPdfPaperSize(
|
|
- printing::PrintingContextLinux* context) = 0;
|
|
-#endif
|
|
-
|
|
// Returns a native file selection dialog. `listener` is of type
|
|
// SelectFileDialog::Listener. TODO(thomasanderson): Move
|
|
// SelectFileDialog::Listener to SelectFileDialogListener so that it can be
|