You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
5.0 KiB
139 lines
5.0 KiB
2 years ago
|
From 30d6e3abe2a0251b11513d66d15a59cd0705a828 Mon Sep 17 00:00:00 2001
|
||
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||
|
Date: Mon, 27 May 2019 17:48:41 +0000
|
||
|
Subject: [PATCH 1/2] clutter-text: Fix selection color drawing
|
||
|
|
||
|
Commit cabcad185 removed the call to cogl_set_source_color4ub() before
|
||
|
cogl_fill_path(), so instead of the previously assigned selection color,
|
||
|
the background is drawn with the last set source.
|
||
|
|
||
|
In order to honour the newly added framebuffer parameter and still apply
|
||
|
the correct color, switch from cogl_fill_path() to the (deprecated!)
|
||
|
cogl_framebuffer_fill_path() method.
|
||
|
|
||
|
https://gitlab.gnome.org/GNOME/mutter/issues/494
|
||
|
---
|
||
|
clutter/clutter/clutter-text.c | 11 ++++++++++-
|
||
|
1 file changed, 10 insertions(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/clutter/clutter/clutter-text.c b/clutter/clutter/clutter-text.c
|
||
|
index fb9d926df..000bbbbd4 100644
|
||
|
--- a/clutter/clutter/clutter-text.c
|
||
|
+++ b/clutter/clutter/clutter-text.c
|
||
|
@@ -1975,6 +1975,7 @@ selection_paint (ClutterText *self,
|
||
|
else
|
||
|
{
|
||
|
/* Paint selection background first */
|
||
|
+ CoglPipeline *color_pipeline = cogl_pipeline_copy (default_color_pipeline);
|
||
|
PangoLayout *layout = clutter_text_get_layout (self);
|
||
|
CoglPath *selection_path = cogl_path_new ();
|
||
|
CoglColor cogl_color = { 0, };
|
||
|
@@ -1987,11 +1988,19 @@ selection_paint (ClutterText *self,
|
||
|
else
|
||
|
color = &priv->text_color;
|
||
|
|
||
|
+ cogl_color_init_from_4ub (&cogl_color,
|
||
|
+ color->red,
|
||
|
+ color->green,
|
||
|
+ color->blue,
|
||
|
+ paint_opacity * color->alpha / 255);
|
||
|
+ cogl_color_premultiply (&cogl_color);
|
||
|
+ cogl_pipeline_set_color (color_pipeline, &cogl_color);
|
||
|
+
|
||
|
clutter_text_foreach_selection_rectangle_prescaled (self,
|
||
|
add_selection_rectangle_to_path,
|
||
|
selection_path);
|
||
|
|
||
|
- cogl_path_fill (selection_path);
|
||
|
+ cogl_framebuffer_fill_path (fb, color_pipeline, selection_path);
|
||
|
|
||
|
/* Paint selected text */
|
||
|
cogl_framebuffer_push_path_clip (fb, selection_path);
|
||
|
--
|
||
|
2.21.0
|
||
|
|
||
|
|
||
|
From 13a1624c1050c91cd4d8a298f7a10fafe56fe9e5 Mon Sep 17 00:00:00 2001
|
||
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||
|
Date: Mon, 27 May 2019 22:40:47 +0000
|
||
|
Subject: [PATCH 2/2] cogl-path: Undeprecate framebuffer functions
|
||
|
|
||
|
It looks like deprecating the functions with explicit framebuffer/pipeline
|
||
|
arguments made it to (cogl) master by mistake:
|
||
|
|
||
|
https://mail.gnome.org/archives/clutter-list/2016-April/msg00008.html
|
||
|
|
||
|
We now use one of them, so this is a good time to undeprecate the lot.
|
||
|
|
||
|
https://gitlab.gnome.org/GNOME/mutter/merge_requests/597
|
||
|
---
|
||
|
cogl/cogl-path/cogl-path-functions.h | 6 ------
|
||
|
cogl/cogl-path/cogl-path.c | 3 ---
|
||
|
2 files changed, 9 deletions(-)
|
||
|
|
||
|
diff --git a/cogl/cogl-path/cogl-path-functions.h b/cogl/cogl-path/cogl-path-functions.h
|
||
|
index d4ef328d2..318fed028 100644
|
||
|
--- a/cogl/cogl-path/cogl-path-functions.h
|
||
|
+++ b/cogl/cogl-path/cogl-path-functions.h
|
||
|
@@ -460,9 +460,7 @@ cogl_path_fill (CoglPath *path);
|
||
|
* use while filling a path.</note>
|
||
|
*
|
||
|
* Stability: unstable
|
||
|
- * Deprecated: 1.16: Use cogl_path_fill() instead
|
||
|
*/
|
||
|
-COGL_DEPRECATED_FOR (cogl_path_fill)
|
||
|
void
|
||
|
cogl_framebuffer_fill_path (CoglFramebuffer *framebuffer,
|
||
|
CoglPipeline *pipeline,
|
||
|
@@ -492,9 +490,7 @@ cogl_path_stroke (CoglPath *path);
|
||
|
* regardless of the current transformation matrix.
|
||
|
*
|
||
|
* Stability: unstable
|
||
|
- * Deprecated: 1.16: Use cogl_path_stroke() instead
|
||
|
*/
|
||
|
-COGL_DEPRECATED_FOR (cogl_path_stroke)
|
||
|
void
|
||
|
cogl_framebuffer_stroke_path (CoglFramebuffer *framebuffer,
|
||
|
CoglPipeline *pipeline,
|
||
|
@@ -529,9 +525,7 @@ cogl_framebuffer_push_path_clip (CoglFramebuffer *framebuffer,
|
||
|
*
|
||
|
* Since: 1.8
|
||
|
* Stability: Unstable
|
||
|
- * Deprecated: 1.16: Use cogl_framebuffer_push_path_clip() instead
|
||
|
*/
|
||
|
-COGL_DEPRECATED_FOR (cogl_framebuffer_push_path_clip)
|
||
|
void
|
||
|
cogl_clip_push_from_path (CoglPath *path);
|
||
|
|
||
|
diff --git a/cogl/cogl-path/cogl-path.c b/cogl/cogl-path/cogl-path.c
|
||
|
index 4d86c6fb5..8774406f8 100644
|
||
|
--- a/cogl/cogl-path/cogl-path.c
|
||
|
+++ b/cogl/cogl-path/cogl-path.c
|
||
|
@@ -1504,7 +1504,6 @@ cogl_framebuffer_push_path_clip (CoglFramebuffer *framebuffer,
|
||
|
COGL_FRAMEBUFFER_STATE_CLIP;
|
||
|
}
|
||
|
|
||
|
-/* XXX: deprecated */
|
||
|
void
|
||
|
cogl_clip_push_from_path (CoglPath *path)
|
||
|
{
|
||
|
@@ -1575,7 +1574,6 @@ _cogl_path_build_stroke_attribute_buffer (CoglPath *path)
|
||
|
data->stroke_n_attributes = n_attributes;
|
||
|
}
|
||
|
|
||
|
-/* XXX: deprecated */
|
||
|
void
|
||
|
cogl_framebuffer_fill_path (CoglFramebuffer *framebuffer,
|
||
|
CoglPipeline *pipeline,
|
||
|
@@ -1588,7 +1586,6 @@ cogl_framebuffer_fill_path (CoglFramebuffer *framebuffer,
|
||
|
_cogl_path_fill_nodes (path, framebuffer, pipeline, 0 /* flags */);
|
||
|
}
|
||
|
|
||
|
-/* XXX: deprecated */
|
||
|
void
|
||
|
cogl_framebuffer_stroke_path (CoglFramebuffer *framebuffer,
|
||
|
CoglPipeline *pipeline,
|
||
|
--
|
||
|
2.21.0
|
||
|
|