From 5425d9dc532d0d4fac407f0c1f112df9ac4b4d1b Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Wed, 1 Mar 2006 03:47:51 +0000 Subject: [PATCH] support un the fly rehinting. SVN revision: 20856 --- TODO | 3 +++ src/bin/e_canvas.c | 21 +++++++++++++++++++++ src/bin/e_canvas.h | 1 + src/bin/e_int_config_hinting.c | 1 + 4 files changed, 26 insertions(+) diff --git a/TODO b/TODO index 62e720edc..ae4e8857f 100644 --- a/TODO +++ b/TODO @@ -8,6 +8,9 @@ Some of the things (in very short form) that need to be done to E17... BUGS / FIXES ------------------------------------------------------------------------------- +* BUG: openoffice 2 when ddisplaying a presentation with xinerama (multiple + zones) weird things happen (the presentation doesnt display - it seemingly + attaches to the 2nd zone, not the first), crashes have been reported too. * BUG: dnd icon from window that has no .eap defining its ocon to ibar and the ibar icon ends up blank (cant build .eap freom ARGB pixels) * BUG: edge flip for desktops still active if turned off when dragging a window diff --git a/src/bin/e_canvas.c b/src/bin/e_canvas.c index f6a46516a..de8f5f4d1 100644 --- a/src/bin/e_canvas.c +++ b/src/bin/e_canvas.c @@ -125,6 +125,27 @@ e_canvas_cache_reload(void) } } +EAPI void +e_canvas_rehint(void) +{ + Evas_List *l; + + for (l = _e_canvases; l; l = l->next) + { + Ecore_Evas *ee; + Evas *e; + + ee = l->data; + e = ecore_evas_get(ee); + if (e_config->font_hinting == 0) + evas_font_hinting_set(e, EVAS_FONT_HINTING_BYTECODE); + else if (e_config->font_hinting == 1) + evas_font_hinting_set(e, EVAS_FONT_HINTING_AUTO); + else if (e_config->font_hinting == 2) + evas_font_hinting_set(e, EVAS_FONT_HINTING_NONE); + } +} + EAPI Ecore_Evas * e_canvas_new(int engine_hint, Ecore_X_Window win, int x, int y, int w, int h, int direct_resize, int override, Ecore_X_Window *win_ret, diff --git a/src/bin/e_canvas.h b/src/bin/e_canvas.h index a83427fe0..d285fccd0 100644 --- a/src/bin/e_canvas.h +++ b/src/bin/e_canvas.h @@ -12,6 +12,7 @@ EAPI int e_canvas_engine_decide(int engine); EAPI void e_canvas_recache(void); EAPI void e_canvas_cache_flush(void); EAPI void e_canvas_cache_reload(void); +EAPI void e_canvas_rehint(void); EAPI Ecore_Evas *e_canvas_new(int engine_hint, Ecore_X_Window win, int x, int y, int w, int h, int direct_resize, int override, Ecore_X_Window *win_ret, Ecore_X_Window *subwin_ret); #endif diff --git a/src/bin/e_int_config_hinting.c b/src/bin/e_int_config_hinting.c index 54612e34e..1f94cad43 100644 --- a/src/bin/e_int_config_hinting.c +++ b/src/bin/e_int_config_hinting.c @@ -73,6 +73,7 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) /* Actually take our cfdata settings and apply them in real life */ e_config->font_hinting = cfdata->hinting; e_config_save_queue(); + e_canvas_rehint(); return 1; /* Apply was OK */ }