summaryrefslogtreecommitdiffstats
path: root/misc/fcitx5-mozc/0008-renderer-Convert-Gtk2-to-Gtk3.patch
diff options
context:
space:
mode:
Diffstat (limited to 'misc/fcitx5-mozc/0008-renderer-Convert-Gtk2-to-Gtk3.patch')
-rw-r--r--misc/fcitx5-mozc/0008-renderer-Convert-Gtk2-to-Gtk3.patch229
1 files changed, 229 insertions, 0 deletions
diff --git a/misc/fcitx5-mozc/0008-renderer-Convert-Gtk2-to-Gtk3.patch b/misc/fcitx5-mozc/0008-renderer-Convert-Gtk2-to-Gtk3.patch
new file mode 100644
index 0000000000..19b55f0f3c
--- /dev/null
+++ b/misc/fcitx5-mozc/0008-renderer-Convert-Gtk2-to-Gtk3.patch
@@ -0,0 +1,229 @@
+From b9ae4c57de95a7d73640cce5776540d8d841b0c2 Mon Sep 17 00:00:00 2001
+From: Nobuhiro Iwamatsu <iwamatsu@debian.org>
+Date: Fri, 6 May 2022 16:16:30 +0900
+Subject: [PATCH] renderer: Convert Gtk2 to Gtk3
+
+Description: renderer: Convert Gtk2 to Gtk3
+Forwarded: Not need
+Last-Update: 2022-05-07
+
+Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@debian.org>
+---
+ src/renderer/mozc_renderer_main.cc | 2 +-
+ src/renderer/renderer.gyp | 7 +++----
+ src/renderer/unix/candidate_window.cc | 4 ++--
+ src/renderer/unix/gtk_wrapper.cc | 4 ++--
+ src/renderer/unix/infolist_window.cc | 4 ++--
+ src/renderer/unix/pango_wrapper.cc | 15 +++------------
+ src/renderer/unix/pango_wrapper.h | 3 +--
+ src/renderer/unix/text_renderer.cc | 5 ++---
+ src/renderer/unix/text_renderer.h | 3 +--
+ src/renderer/unix/text_renderer_interface.h | 2 +-
+ 10 files changed, 18 insertions(+), 31 deletions(-)
+
+diff --git a/src/renderer/mozc_renderer_main.cc b/src/renderer/mozc_renderer_main.cc
+index 85a0ae10..3b596d67 100644
+--- a/src/renderer/mozc_renderer_main.cc
++++ b/src/renderer/mozc_renderer_main.cc
+@@ -80,7 +80,7 @@ int main(int argc, char *argv[]) {
+ #ifdef OS_WIN
+ mozc::ScopedCOMInitializer com_initializer;
+ #elif defined(ENABLE_GTK_RENDERER)
+- gtk_set_locale();
++ setlocale(LC_ALL, "");
+ #if !GLIB_CHECK_VERSION(2, 31, 0)
+ // There are not g_thread_init function in glib>=2.31.0.
+ // http://developer.gnome.org/glib/2.31/glib-Deprecated-Thread-APIs.html#g-thread-init
+diff --git a/src/renderer/renderer.gyp b/src/renderer/renderer.gyp
+index 78eb6a75..34141a4a 100644
+--- a/src/renderer/renderer.gyp
++++ b/src/renderer/renderer.gyp
+@@ -532,15 +532,14 @@
+ # Required 'cflags' and 'link_settings' will be automatically
+ # injected into any target which directly or indirectly depends
+ # on this target.
+- 'target_name': 'gtk2_build_environment',
++ 'target_name': 'gtk3_build_environment',
+ 'type': 'none',
+ 'variables': {
+ 'target_pkgs' : [
+ 'glib-2.0',
+ 'gobject-2.0',
+ 'gthread-2.0',
+- 'gtk+-2.0',
+- 'gdk-2.0',
++ 'gtk+-3.0',
+ ],
+ },
+ 'all_dependent_settings': {
+@@ -583,7 +582,7 @@
+ '../ipc/ipc.gyp:ipc',
+ '../protocol/protocol.gyp:genproto_config_proto#host',
+ '../protocol/protocol.gyp:renderer_proto',
+- 'gtk2_build_environment',
++ 'gtk3_build_environment',
+ 'renderer_server',
+ 'renderer_style_handler',
+ 'table_layout',
+diff --git a/src/renderer/unix/candidate_window.cc b/src/renderer/unix/candidate_window.cc
+index bb0a346b..287f6871 100644
+--- a/src/renderer/unix/candidate_window.cc
++++ b/src/renderer/unix/candidate_window.cc
+@@ -85,7 +85,7 @@ CandidateWindow::CandidateWindow(TableLayoutInterface *table_layout,
+
+ bool CandidateWindow::OnPaint(GtkWidget *widget, GdkEventExpose *event) {
+ draw_tool_->Reset(
+- cairo_factory_->CreateCairoInstance(GetCanvasWidget()->window));
++ cairo_factory_->CreateCairoInstance(gtk_widget_get_window(GetCanvasWidget())));
+
+ DrawBackground();
+ DrawShortcutBackground();
+@@ -263,7 +263,7 @@ void CandidateWindow::DrawFrame() {
+ }
+
+ void CandidateWindow::Initialize() {
+- text_renderer_->Initialize(GetCanvasWidget()->window);
++ text_renderer_->Initialize(GetCanvasWidget());
+ }
+
+ void CandidateWindow::UpdateScrollBarSize() {
+diff --git a/src/renderer/unix/gtk_wrapper.cc b/src/renderer/unix/gtk_wrapper.cc
+index 83d206d7..92c5483f 100644
+--- a/src/renderer/unix/gtk_wrapper.cc
++++ b/src/renderer/unix/gtk_wrapper.cc
+@@ -49,7 +49,7 @@ void GtkWrapper::GSignalConnect(gpointer instance, const gchar *signal,
+ }
+
+ void GtkWrapper::GtkWidgetHideAll(GtkWidget *widget) {
+- gtk_widget_hide_all(widget);
++ gtk_widget_hide(widget);
+ }
+
+ void GtkWrapper::GtkWidgetShowAll(GtkWidget *widget) {
+@@ -135,7 +135,7 @@ void GtkWrapper::GtkWidgetRealize(GtkWidget *widget) {
+
+ void GtkWrapper::GdkWindowSetTypeHint(GtkWidget *widget,
+ GdkWindowTypeHint hint) {
+- gdk_window_set_type_hint(widget->window, hint);
++ gdk_window_set_type_hint(gtk_widget_get_window(widget), hint);
+ }
+
+ } // namespace gtk
+diff --git a/src/renderer/unix/infolist_window.cc b/src/renderer/unix/infolist_window.cc
+index 253f9659..f76f4c93 100644
+--- a/src/renderer/unix/infolist_window.cc
++++ b/src/renderer/unix/infolist_window.cc
+@@ -100,7 +100,7 @@ Rect InfolistWindow::GetCandidateColumnInClientCord() const {
+
+ bool InfolistWindow::OnPaint(GtkWidget *widget, GdkEventExpose *event) {
+ draw_tool_->Reset(
+- cairo_factory_->CreateCairoInstance(GetCanvasWidget()->window));
++ cairo_factory_->CreateCairoInstance(gtk_widget_get_window(GetCanvasWidget())));
+ Draw();
+ return true;
+ }
+@@ -237,7 +237,7 @@ int InfolistWindow::DrawRow(int row, int ypos) {
+ }
+
+ void InfolistWindow::Initialize() {
+- text_renderer_->Initialize(GetCanvasWidget()->window);
++ text_renderer_->Initialize(GetCanvasWidget());
+ }
+
+ void InfolistWindow::ReloadFontConfig(const std::string &font_description) {
+diff --git a/src/renderer/unix/pango_wrapper.cc b/src/renderer/unix/pango_wrapper.cc
+index 8f87699a..545072a3 100644
+--- a/src/renderer/unix/pango_wrapper.cc
++++ b/src/renderer/unix/pango_wrapper.cc
+@@ -88,21 +88,12 @@ void PangoWrapper::AttributesUnref(PangoAttrList *attribute) {
+
+ PangoContext *PangoWrapper::GetContext() { return context_; }
+
+-PangoWrapper::PangoWrapper(GdkDrawable *drawable) : gc_(gdk_gc_new(drawable)) {
+- GdkScreen *screen = gdk_drawable_get_screen(drawable);
+- renderer_ = gdk_pango_renderer_new(screen);
+- gdk_pango_renderer_set_drawable(GDK_PANGO_RENDERER(renderer_), drawable);
+- gdk_pango_renderer_set_gc(GDK_PANGO_RENDERER(renderer_), gc_);
+- context_ = gdk_pango_context_get();
++PangoWrapper::PangoWrapper(GtkWidget *window) {
++ context_ = gtk_widget_get_pango_context(window);
+ }
+
+ PangoWrapper::~PangoWrapper() {
+- gdk_pango_renderer_set_override_color(GDK_PANGO_RENDERER(renderer_),
+- PANGO_RENDER_PART_FOREGROUND, nullptr);
+- gdk_pango_renderer_set_drawable(GDK_PANGO_RENDERER(renderer_), nullptr);
+- gdk_pango_renderer_set_gc(GDK_PANGO_RENDERER(renderer_), nullptr);
+- g_object_unref(gc_);
+- g_object_unref(context_);
++ g_object_unref(G_OBJECT(context_));
+ }
+
+ } // namespace gtk
+diff --git a/src/renderer/unix/pango_wrapper.h b/src/renderer/unix/pango_wrapper.h
+index 7c41cc54..c7c7fb04 100644
+--- a/src/renderer/unix/pango_wrapper.h
++++ b/src/renderer/unix/pango_wrapper.h
+@@ -57,7 +57,7 @@ class PangoLayoutWrapper : public PangoLayoutWrapperInterface {
+
+ class PangoWrapper : public PangoWrapperInterface {
+ public:
+- explicit PangoWrapper(GdkDrawable *drawable);
++ explicit PangoWrapper(GtkWidget *window);
+ virtual ~PangoWrapper();
+ virtual void RendererDrawLayout(PangoLayoutWrapperInterface *layout, int x,
+ int y);
+@@ -68,7 +68,6 @@ class PangoWrapper : public PangoWrapperInterface {
+ private:
+ PangoRenderer *renderer_;
+ PangoContext *context_;
+- GdkGC *gc_;
+ DISALLOW_COPY_AND_ASSIGN(PangoWrapper);
+ };
+ } // namespace gtk
+diff --git a/src/renderer/unix/text_renderer.cc b/src/renderer/unix/text_renderer.cc
+index 164f01bc..4ba96ea2 100644
+--- a/src/renderer/unix/text_renderer.cc
++++ b/src/renderer/unix/text_renderer.cc
+@@ -39,9 +39,8 @@ namespace gtk {
+
+ TextRenderer::TextRenderer(FontSpecInterface *font_spec)
+ : font_spec_(font_spec), pango_(nullptr) {}
+-
+-void TextRenderer::Initialize(GdkDrawable *drawable) {
+- pango_.reset(new PangoWrapper(drawable));
++void TextRenderer::Initialize(GtkWidget *window) {
++ pango_.reset(new PangoWrapper(window));
+ }
+
+ void TextRenderer::SetUpPangoLayout(const std::string &str,
+diff --git a/src/renderer/unix/text_renderer.h b/src/renderer/unix/text_renderer.h
+index c4cd2430..ba36b052 100644
+--- a/src/renderer/unix/text_renderer.h
++++ b/src/renderer/unix/text_renderer.h
+@@ -50,8 +50,7 @@ class TextRenderer : public TextRendererInterface {
+ public:
+ explicit TextRenderer(FontSpecInterface *font_spec);
+ virtual ~TextRenderer() {}
+-
+- virtual void Initialize(GdkDrawable *drawable);
++ virtual void Initialize(GtkWidget *window);
+ virtual Size GetPixelSize(FontSpecInterface::FONT_TYPE font_type,
+ const std::string &str);
+ virtual Size GetMultiLinePixelSize(FontSpecInterface::FONT_TYPE font_type,
+diff --git a/src/renderer/unix/text_renderer_interface.h b/src/renderer/unix/text_renderer_interface.h
+index db823217..9c569f6a 100644
+--- a/src/renderer/unix/text_renderer_interface.h
++++ b/src/renderer/unix/text_renderer_interface.h
+@@ -44,7 +44,7 @@ class TextRendererInterface {
+ TextRendererInterface() {}
+ virtual ~TextRendererInterface() {}
+
+- virtual void Initialize(GdkDrawable *drawable) = 0;
++ virtual void Initialize(GtkWidget *window) = 0;
+ // Returns boundary rectangle size of actual rendered text.
+ virtual Size GetPixelSize(FontSpecInterface::FONT_TYPE font_type,
+ const std::string &str) = 0;
+--
+2.36.0
+