[SCM] WebKit Debian packaging branch, webkit-1.1, updated. upstream/1.1.21-584-g1e41756

kevino at webkit.org kevino at webkit.org
Fri Feb 26 22:17:22 UTC 2010


The following commit has been merged in the webkit-1.1 branch:
commit 09c7df6dd2582905883a5ce0040be1119697035c
Author: kevino at webkit.org <kevino at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu Feb 11 01:22:52 2010 +0000

    Reviewed by Kevin Ollivier.
    
    [wx] Add Windows complex text support and Mac support for containsCharacters.
    
    https://bugs.webkit.org/show_bug.cgi?id=34759
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@54633 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/JavaScriptCore/ChangeLog b/JavaScriptCore/ChangeLog
index 796278f..bcc1cc8 100644
--- a/JavaScriptCore/ChangeLog
+++ b/JavaScriptCore/ChangeLog
@@ -1,3 +1,13 @@
+2010-02-10  Kevin Watters  <kevinwatters at gmail.com>
+
+        Reviewed by Kevin Ollivier.
+
+        [wx] Add Windows complex text support and Mac support for containsCharacters.
+        
+        https://bugs.webkit.org/show_bug.cgi?id=34759
+
+        * wscript:
+
 2010-02-10  Alexey Proskuryakov  <ap at apple.com>
 
         Addressing issues found by style bot.
diff --git a/JavaScriptCore/wscript b/JavaScriptCore/wscript
index f5a041f..7caf8b4 100644
--- a/JavaScriptCore/wscript
+++ b/JavaScriptCore/wscript
@@ -72,6 +72,8 @@ def build(bld):
     full_dirs = get_dirs_for_features(jscore_dir, features=[build_port], dirs=jscore_dirs)
 
     includes = common_includes + full_dirs
+    if sys.platform.startswith('darwin'):
+        includes.append(os.path.join(jscore_dir, 'icu'))
 
     # 1. A simple program
     jscore = bld.new_task_gen(
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 6f0f694..45e0d07 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,5 +1,44 @@
-2010-02-10  Kwang Yul Seo  <skyul at company100.net>
+2010-02-10  Kevin Watters  <kevinwatters at gmail.com>
+
+        Reviewed by Kevin Ollivier.
 
+        [wx] Add Windows complex text support and Mac support for containsCharacters.
+        
+        https://bugs.webkit.org/show_bug.cgi?id=34759
+        
+        * platform/graphics/SimpleFontData.h:
+        * platform/graphics/wx/FontPlatformData.h:
+        (WebCore::FontPlatformData::roundsGlyphAdvances):
+        * platform/graphics/wx/FontPlatformDataWx.cpp:
+        (WebCore::FontPlatformData::useGDI):
+        (WebCore::FontPlatformData::hfont):
+        * platform/graphics/wx/FontWx.cpp:
+        (WebCore::Font::canReturnFallbackFontsForComplexText):
+        (WebCore::Font::selectionRectForComplexText):
+        (WebCore::Font::drawComplexText):
+        (WebCore::Font::floatWidthForComplexText):
+        (WebCore::Font::offsetForPositionForComplexText):
+        * platform/graphics/wx/SimpleFontDataWx.cpp:
+        (WebCore::SimpleFontData::platformInit):
+        (WebCore::SimpleFontData::platformDestroy):
+        (WebCore::SimpleFontData::containsCharacters):
+        (WebCore::SimpleFontData::platformWidthForGlyph):
+        (WebCore::SimpleFontData::scriptFontProperties):
+        (WebCore::SimpleFontData::initGDIFont):
+        (WebCore::SimpleFontData::platformCommonDestroy):
+        (WebCore::SimpleFontData::widthForGDIGlyph):
+        * platform/wx/wxcode/fontprops.h:
+        * platform/wx/wxcode/gtk/fontprops.cpp:
+        (wxFontContainsCharacters):
+        * platform/wx/wxcode/mac/carbon/fontprops.cpp:
+        (wxFontContainsCharacters):
+        * platform/wx/wxcode/win/fontprops.cpp:
+        (wxFontContainsCharacters):
+        * platform/wx/wxcode/win/non-kerned-drawing.cpp:
+        (WebCore::drawTextWithSpacing):
+        * wscript:
+
+2010-02-10  Kwang Yul Seo  <skyul at company100.net>
         Reviewed by Eric Seidel.
 
         [BREWMP] Add dummy Frame::dragImageForSelection
@@ -11,7 +50,6 @@
         * page/brew/FrameBrew.cpp: Added.
         (WebCore::Frame::dragImageForSelection):
 
-
 2010-02-10  Kevin Ollivier  <kevino at theolliviers.com>
 
         [wx] Build fix. Switch drawPattern to Image class like other platforms.
diff --git a/WebCore/platform/graphics/SimpleFontData.h b/WebCore/platform/graphics/SimpleFontData.h
index 09ed0fc..0366e3b 100644
--- a/WebCore/platform/graphics/SimpleFontData.h
+++ b/WebCore/platform/graphics/SimpleFontData.h
@@ -35,7 +35,8 @@
 typedef struct OpaqueATSUStyle* ATSUStyle;
 #endif
 
-#if PLATFORM(WIN) && !OS(WINCE)
+#if (PLATFORM(WIN) && !OS(WINCE)) \
+    || (OS(WINDOWS) && PLATFORM(WX))
 #include <usp10.h>
 #endif
 
@@ -86,7 +87,7 @@ public:
     float spaceWidth() const { return m_spaceWidth; }
     float adjustedSpaceWidth() const { return m_adjustedSpaceWidth; }
 
-#if PLATFORM(CG) || PLATFORM(CAIRO)
+#if PLATFORM(CG) || PLATFORM(CAIRO) || (OS(WINDOWS) && PLATFORM(WX))
     float syntheticBoldOffset() const { return m_syntheticBoldOffset; }
 #endif
 
@@ -138,7 +139,7 @@ public:
     QFont getQtFont() const { return m_platformData.font(); }
 #endif
 
-#if PLATFORM(WIN)
+#if PLATFORM(WIN) || (OS(WINDOWS) && PLATFORM(WX))
     bool isSystemFont() const { return m_isSystemFont; }
 #if !OS(WINCE) // disable unused members to save space
     SCRIPT_FONTPROPERTIES* scriptFontProperties() const;
@@ -162,7 +163,8 @@ private:
 
     void commonInit();
 
-#if PLATFORM(WIN) && !OS(WINCE)
+#if (PLATFORM(WIN) && !OS(WINCE)) \
+    || (OS(WINDOWS) && PLATFORM(WX))
     void initGDIFont();
     void platformCommonDestroy();
     float widthForGDIGlyph(Glyph glyph) const;
@@ -198,7 +200,7 @@ private:
 
     mutable SimpleFontData* m_smallCapsFontData;
 
-#if PLATFORM(CG) || PLATFORM(CAIRO)
+#if PLATFORM(CG) || PLATFORM(CAIRO) || (OS(WINDOWS) && PLATFORM(WX))
     float m_syntheticBoldOffset;
 #endif
 
@@ -224,7 +226,7 @@ private:
     mutable HashMap<unsigned, RetainPtr<CFDictionaryRef> > m_CFStringAttributes;
 #endif
 
-#if PLATFORM(WIN)
+#if PLATFORM(WIN) || (OS(WINDOWS) && PLATFORM(WX))
     bool m_isSystemFont;
 #if !OS(WINCE) // disable unused members to save space
     mutable SCRIPT_CACHE m_scriptCache;
diff --git a/WebCore/platform/graphics/wx/FontPlatformData.h b/WebCore/platform/graphics/wx/FontPlatformData.h
index 3b99830..be00edc 100644
--- a/WebCore/platform/graphics/wx/FontPlatformData.h
+++ b/WebCore/platform/graphics/wx/FontPlatformData.h
@@ -113,6 +113,13 @@ public:
 
     bool isHashTableDeletedValue() const { return m_fontState == DELETED; }
     
+    bool roundsGlyphAdvances() const { return false; }
+    
+#if OS(WINDOWS)
+    bool useGDI() const;
+    HFONT hfont() const;
+#endif
+
 #ifndef NDEBUG
     String description() const;
 #endif
diff --git a/WebCore/platform/graphics/wx/FontPlatformDataWx.cpp b/WebCore/platform/graphics/wx/FontPlatformDataWx.cpp
index fd3322f..c9646d7 100644
--- a/WebCore/platform/graphics/wx/FontPlatformDataWx.cpp
+++ b/WebCore/platform/graphics/wx/FontPlatformDataWx.cpp
@@ -129,4 +129,16 @@ String FontPlatformData::description() const
 }
 #endif
 
+#if OS(WINDOWS)
+bool FontPlatformData::useGDI() const
+{
+    return true;
+}
+
+HFONT FontPlatformData::hfont() const
+{
+    return static_cast<HFONT>(m_font->font()->GetHFONT());
+}
+#endif
+
 }
diff --git a/WebCore/platform/graphics/wx/FontWx.cpp b/WebCore/platform/graphics/wx/FontWx.cpp
index 04b2ec4..98b5a0a 100644
--- a/WebCore/platform/graphics/wx/FontWx.cpp
+++ b/WebCore/platform/graphics/wx/FontWx.cpp
@@ -33,6 +33,10 @@
 #include "NotImplemented.h"
 #include "SimpleFontData.h"
 
+#if OS(WINDOWS)
+#include "UniscribeController.h"
+#endif
+
 #include <wx/dcclient.h>
 #include "fontprops.h"
 #include "non-kerned-drawing.h"
@@ -41,7 +45,11 @@ namespace WebCore {
 
 bool Font::canReturnFallbackFontsForComplexText()
 {
+#if OS(WINDOWS)
+    return true;
+#else
     return false;
+#endif
 }
 
 void Font::drawGlyphs(GraphicsContext* graphicsContext, const SimpleFontData* font, const GlyphBuffer& glyphBuffer, 
@@ -59,25 +67,80 @@ void Font::drawGlyphs(GraphicsContext* graphicsContext, const SimpleFontData* fo
 
 FloatRect Font::selectionRectForComplexText(const TextRun& run, const IntPoint& point, int h, int from, int to) const
 {
+#if OS(WINDOWS)
+    UniscribeController it(this, run);
+    it.advance(from);
+    float beforeWidth = it.runWidthSoFar();
+    it.advance(to);
+    float afterWidth = it.runWidthSoFar();
+
+    // Using roundf() rather than ceilf() for the right edge as a compromise to ensure correct caret positioning
+    if (run.rtl()) {
+        it.advance(run.length());
+        float totalWidth = it.runWidthSoFar();
+        return FloatRect(point.x() + floorf(totalWidth - afterWidth), point.y(), roundf(totalWidth - beforeWidth) - floorf(totalWidth - afterWidth), h);
+    } 
+    
+    return FloatRect(point.x() + floorf(beforeWidth), point.y(), roundf(afterWidth) - floorf(beforeWidth), h);
+#else
     notImplemented();
     return FloatRect();
+#endif
 }
 
-void Font::drawComplexText(GraphicsContext* graphicsContext, const TextRun& run, const FloatPoint& point, int from, int to) const
+void Font::drawComplexText(GraphicsContext* context, const TextRun& run, const FloatPoint& point, int from, int to) const
 {
+#if OS(WINDOWS)
+    // This glyph buffer holds our glyphs + advances + font data for each glyph.
+    GlyphBuffer glyphBuffer;
+
+    float startX = point.x();
+    UniscribeController controller(this, run);
+    controller.advance(from);
+    float beforeWidth = controller.runWidthSoFar();
+    controller.advance(to, &glyphBuffer);
+    
+    // We couldn't generate any glyphs for the run.  Give up.
+    if (glyphBuffer.isEmpty())
+        return;
+    
+    float afterWidth = controller.runWidthSoFar();
+
+    if (run.rtl()) {
+        controller.advance(run.length());
+        startX += controller.runWidthSoFar() - afterWidth;
+    } else
+        startX += beforeWidth;
+
+    // Draw the glyph buffer now at the starting point returned in startX.
+    FloatPoint startPoint(startX, point.y());
+    drawGlyphBuffer(context, glyphBuffer, run, startPoint);
+#else
     notImplemented();
+#endif
 }
 
-float Font::floatWidthForComplexText(const TextRun& run, HashSet<const SimpleFontData*>* /* fallbackFonts */) const
+
+float Font::floatWidthForComplexText(const TextRun& run, HashSet<const SimpleFontData*>* fallbackFonts) const
 {
+#if OS(WINDOWS)
+    UniscribeController controller(this, run, fallbackFonts);
+    controller.advance(run.length());
+    return controller.runWidthSoFar();
+#else
     notImplemented();
     return 0;
+#endif
 }
 
 int Font::offsetForPositionForComplexText(const TextRun& run, int x, bool includePartialGlyphs) const
 {
+#if OS(WINDOWS)
+    UniscribeController controller(this, run);
+    return controller.offsetForPosition(x, includePartialGlyphs);
+#else
     notImplemented();
     return 0;
+#endif
 }
-
 }
diff --git a/WebCore/platform/graphics/wx/SimpleFontDataWx.cpp b/WebCore/platform/graphics/wx/SimpleFontDataWx.cpp
index 85979de..d9fd2b3 100644
--- a/WebCore/platform/graphics/wx/SimpleFontDataWx.cpp
+++ b/WebCore/platform/graphics/wx/SimpleFontDataWx.cpp
@@ -55,6 +55,13 @@ void SimpleFontData::platformInit()
         m_unitsPerEm = 1; // FIXME!
         m_lineGap = props.GetLineGap();
     }
+
+#if OS(WINDOWS)
+    m_scriptCache = 0;
+    m_scriptFontProperties = 0;
+    m_isSystemFont = false;
+    m_syntheticBoldOffset = 0.0f;
+#endif
 }
 
 void SimpleFontData::platformCharWidthInit()
@@ -68,6 +75,16 @@ void SimpleFontData::platformDestroy()
 {
     delete m_smallCapsFontData;
     m_smallCapsFontData = 0;
+    
+#if OS(WINDOWS)
+    if (m_scriptFontProperties) {
+        delete m_scriptFontProperties;
+        m_scriptFontProperties = 0;
+    }
+
+    if (m_scriptCache)
+        ScriptFreeCache(&m_scriptCache);
+#endif
 }
 
 SimpleFontData* SimpleFontData::smallCapsFontData(const FontDescription& fontDescription) const
@@ -84,7 +101,7 @@ SimpleFontData* SimpleFontData::smallCapsFontData(const FontDescription& fontDes
 bool SimpleFontData::containsCharacters(const UChar* characters, int length) const
 {
     // FIXME: We will need to implement this to load non-ASCII encoding sites
-    return true;
+    return wxFontContainsCharacters(*m_platformData.font(), characters, length);
 }
 
 void SimpleFontData::determinePitch()
@@ -97,10 +114,44 @@ void SimpleFontData::determinePitch()
 
 float SimpleFontData::platformWidthForGlyph(Glyph glyph) const
 {
+#if __WXMSW__
+    // under Windows / wxMSW we currently always use GDI fonts.
+    return widthForGDIGlyph(glyph);
+#else
     // TODO: fix this! Make GetTextExtents a method of wxFont in 2.9
     int width = 10;
     GetTextExtent(*m_platformData.font(), (wxChar)glyph, &width, NULL);
     return width;
+#endif
+}
+
+#if OS(WINDOWS)
+SCRIPT_FONTPROPERTIES* SimpleFontData::scriptFontProperties() const
+{
+    // AFAICT this is never called even by the Win port anymore.
+    return 0;
+}
+
+void SimpleFontData::initGDIFont()
+{
+    // unused by wx port
+}
+
+void SimpleFontData::platformCommonDestroy()
+{
+    // unused by wx port
+}
+
+float SimpleFontData::widthForGDIGlyph(Glyph glyph) const
+{
+    HDC hdc = GetDC(0);
+    HGDIOBJ oldFont = SelectObject(hdc, m_platformData.hfont());
+    int width;
+    GetCharWidthI(hdc, glyph, 1, 0, &width);
+    SelectObject(hdc, oldFont);
+    ReleaseDC(0, hdc);
+    return width;
 }
+#endif
 
 }
diff --git a/WebCore/platform/wx/wxcode/fontprops.h b/WebCore/platform/wx/wxcode/fontprops.h
index 7f38bcf..3f99462 100644
--- a/WebCore/platform/wx/wxcode/fontprops.h
+++ b/WebCore/platform/wx/wxcode/fontprops.h
@@ -48,3 +48,4 @@ private:
         
 };
 
+bool wxFontContainsCharacters(const wxFont& font, const UChar* characters, int length);
diff --git a/WebCore/platform/wx/wxcode/gtk/fontprops.cpp b/WebCore/platform/wx/wxcode/gtk/fontprops.cpp
index df14812..491458d 100644
--- a/WebCore/platform/wx/wxcode/gtk/fontprops.cpp
+++ b/WebCore/platform/wx/wxcode/gtk/fontprops.cpp
@@ -24,6 +24,8 @@
  */
 
 #include "config.h"
+// this needs to be included before fontprops.h for UChar* to be defined.
+#include <wtf/unicode/Unicode.h>
 
 #include <wx/defs.h>
 #include <wx/gdicmn.h>
@@ -92,6 +94,11 @@ m_ascent(0), m_descent(0), m_lineGap(0), m_lineSpacing(0), m_xHeight(0)
 #endif
 }
 
+bool wxFontContainsCharacters(const wxFont& font, const UChar* characters, int length)
+{
+    return true;
+}
+
 void GetTextExtent( const wxFont& font, const wxString& str, wxCoord *width, wxCoord *height,
                             wxCoord *descent, wxCoord *externalLeading )
 {
diff --git a/WebCore/platform/wx/wxcode/mac/carbon/fontprops.cpp b/WebCore/platform/wx/wxcode/mac/carbon/fontprops.cpp
index 23dea6b..2312dec 100644
--- a/WebCore/platform/wx/wxcode/mac/carbon/fontprops.cpp
+++ b/WebCore/platform/wx/wxcode/mac/carbon/fontprops.cpp
@@ -24,6 +24,9 @@
  */
 
 #include "config.h"
+// this needs to be included before fontprops.h for UChar* to be defined.
+#include <wtf/unicode/Unicode.h>
+
 #include "fontprops.h"
 
 #include <ApplicationServices/ApplicationServices.h>
@@ -89,6 +92,19 @@ m_ascent(0), m_descent(0), m_lineGap(0), m_lineSpacing(0), m_xHeight(0)
 
 }
 
+bool wxFontContainsCharacters(const wxFont& font, const UChar* characters, int length)
+{
+#if wxOSX_USE_COCOA
+    NSString* string = [[NSString alloc] initWithCharactersNoCopy:const_cast<unichar*>(characters) length:length freeWhenDone:NO];
+    NSCharacterSet* set = [[font.GetNSFont() coveredCharacterSet] invertedSet];
+    bool result = set && [string rangeOfCharacterFromSet:set].location == NSNotFound;
+    [string release];
+    return result;
+#else
+    return true;
+#endif
+}
+
 void GetTextExtent( const wxFont& font, const wxString& str, wxCoord *width, wxCoord *height,
                             wxCoord *descent, wxCoord *externalLeading )
 {
diff --git a/WebCore/platform/wx/wxcode/win/fontprops.cpp b/WebCore/platform/wx/wxcode/win/fontprops.cpp
index 531db08..d6ba964 100644
--- a/WebCore/platform/wx/wxcode/win/fontprops.cpp
+++ b/WebCore/platform/wx/wxcode/win/fontprops.cpp
@@ -24,15 +24,21 @@
  */
 
 #include "config.h"
-#include <wx/defs.h>
-#include <wx/gdicmn.h>
+// this needs to be included before fontprops.h for UChar* to be defined.
+#include <wtf/unicode/Unicode.h>
+
 #include "fontprops.h"
 #include "math.h"
 #include "MathExtras.h"
 
+#include <wx/defs.h>
+#include <wx/gdicmn.h>
 #include <wx/wx.h>
 #include "wx/msw/private.h"
 
+#include <mlang.h>
+#include <usp10.h>
+
 inline long  my_round(double x)
 {
     return (long)(x < 0 ? x - 0.5 : x + 0.5);
@@ -60,6 +66,46 @@ m_ascent(0), m_descent(0), m_lineGap(0), m_lineSpacing(0), m_xHeight(0)
     ReleaseDC(0, dc);
 }
 
+bool wxFontContainsCharacters(const wxFont& font, const UChar* characters, int length)
+{
+    // FIXME: Microsoft documentation seems to imply that characters can be output using a given font and DC
+    // merely by testing code page intersection.  This seems suspect though.  Can't a font only partially
+    // cover a given code page?
+    static IMultiLanguage *multiLanguage;
+    if (!multiLanguage) {
+        if (CoCreateInstance(CLSID_CMultiLanguage, 0, CLSCTX_ALL, IID_IMultiLanguage, (void**)&multiLanguage) != S_OK)
+            return true;
+    }
+
+    static IMLangFontLink2* langFontLink;
+    if (!langFontLink) {
+        if (multiLanguage->QueryInterface(&langFontLink) != S_OK)
+            return true;
+    }
+
+    HDC dc = GetDC(0);
+    
+    DWORD acpCodePages;
+    langFontLink->CodePageToCodePages(CP_ACP, &acpCodePages);
+
+    DWORD fontCodePages;
+    langFontLink->GetFontCodePages(dc, static_cast<HFONT>(font.GetHFONT()), &fontCodePages);
+
+    DWORD actualCodePages;
+    long numCharactersProcessed;
+    long offset = 0;
+    while (offset < length) {
+        langFontLink->GetStrCodePages(characters, length, acpCodePages, &actualCodePages, &numCharactersProcessed);
+        if ((actualCodePages & fontCodePages))
+            return false;
+        offset += numCharactersProcessed;
+    }
+
+    ReleaseDC(0, dc);
+
+    return true;
+}
+
 void GetTextExtent( const wxFont& font, const wxString& str, wxCoord *width, wxCoord *height,
                             wxCoord *descent, wxCoord *externalLeading )
 {
diff --git a/WebCore/platform/wx/wxcode/win/non-kerned-drawing.cpp b/WebCore/platform/wx/wxcode/win/non-kerned-drawing.cpp
index 72fcc54..2fcd761 100644
--- a/WebCore/platform/wx/wxcode/win/non-kerned-drawing.cpp
+++ b/WebCore/platform/wx/wxcode/win/non-kerned-drawing.cpp
@@ -122,7 +122,7 @@ void drawTextWithSpacing(GraphicsContext* graphicsContext, const SimpleFontData*
 
     // draw text with optional character widths array
     wxString string = wxString((wxChar*)(&glyphs[from]), numGlyphs);
-    ::ExtTextOut(hdc, x, y, 0, NULL, string.c_str(), string.length(), spacing);
+    ::ExtTextOut(hdc, x, y,  ETO_GLYPH_INDEX, 0, reinterpret_cast<const WCHAR*>(glyphs), numGlyphs, spacing);
 
     ::SetBkMode(hdc, TRANSPARENT);
 
diff --git a/WebCore/wscript b/WebCore/wscript
index 19cc392..5fdf64c 100644
--- a/WebCore/wscript
+++ b/WebCore/wscript
@@ -33,10 +33,10 @@ if build_port == "wx":
     if building_on_win32:
         webcore_dirs.extend(['platform/wx/wxcode/win', 'plugins/win'])
         webcore_sources['wx-win'] = [
+               'platform/graphics/win/TransformationMatrixWin.cpp',
                # wxTimer on Windows has a bug that causes it to eat crashes in callbacks
                # so we need to use the Win port's implementation until the wx bug fix is
                # widely available (it was fixed in 2.8.10).
-               'platform/graphics/win/TransformationMatrixWin.cpp',
                'platform/win/SharedTimerWin.cpp',
                # Use the Windows plugin architecture
                'page/win/PageWin.cpp',
@@ -90,6 +90,13 @@ def set_options(opt):
 def configure(conf):
     common_configure(conf)
     generate_webcore_derived_sources()
+    if sys.platform.startswith('win'):
+        graphics_dir = os.path.join(wk_root, 'WebCore', 'platform', 'graphics')
+        # HACK ALERT: MSVC automatically adds the source file's directory as the first entry in the
+        # path. Unfortunately, that means when compiling these files we will end up including
+        # win/FontPlatformData.h, which breaks wx compilation. So we copy the files to the wx dir.
+        for afile in ['UniscribeController.h', 'UniscribeController.cpp', 'GlyphPageTreeNodeCairoWin.cpp']:
+            shutil.copy(os.path.join(graphics_dir, 'win', afile), os.path.join(graphics_dir, 'wx'))
 
 def build(bld):
     import Options
@@ -106,9 +113,11 @@ def build(bld):
         ]
 
     features = [build_port]
-    exclude_patterns = ['*None.cpp', '*CFNet.cpp', '*Qt.cpp', '*Win.cpp', '*Wince.cpp', '*Gtk.cpp', '*Mac.cpp', '*Safari.cpp', '*Chromium*.cpp','*SVG*.cpp', '*AllInOne.cpp', 'test*bindings.*']
+    exclude_patterns = ['*None.cpp', '*CFNet.cpp', '*Qt.cpp', '*Wince.cpp', '*Gtk.cpp', '*Mac.cpp', '*Safari.cpp', '*Chromium*.cpp','*SVG*.cpp', '*AllInOne.cpp', 'test*bindings.*']
     if build_port == 'wx':
         features.append('curl')
+        if not building_on_win32:
+            exclude_patterns.append('*Win.cpp')
         
     if sys.platform.startswith('darwin'):
         features.append('cf')
@@ -126,6 +135,8 @@ def build(bld):
     wk_includes.append(os.path.join(jscore_dir, 'wtf', 'unicode'))
     wk_includes.append(os.path.join(jscore_dir, 'wtf', 'unicode', 'icu'))
     wk_includes += common_includes + full_dirs
+    if sys.platform.startswith('darwin'):
+        wk_includes.append(os.path.join(webcore_dir, 'icu'))
 
     cxxflags = []
     if building_on_win32:
@@ -168,6 +179,9 @@ def build(bld):
         excludes.append('JSInspectorController.cpp')
         if building_on_win32:
             excludes.append('SharedTimerWx.cpp')
+            excludes.append('GlyphMapWx.cpp')
+            excludes.append('RenderThemeWin.cpp')
+            excludes.append('KeyEventWin.cpp')
             
         excludes.append('AuthenticationCF.cpp')
         excludes.append('LoaderRunLoopCF.cpp')
diff --git a/WebKitTools/ChangeLog b/WebKitTools/ChangeLog
index c774759..a17a5aa 100644
--- a/WebKitTools/ChangeLog
+++ b/WebKitTools/ChangeLog
@@ -1,3 +1,13 @@
+2010-02-10  Kevin Watters  <kevinwatters at gmail.com>
+
+        Reviewed by Kevin Ollivier.
+
+        [wx] Add Windows complex text support.
+        
+        https://bugs.webkit.org/show_bug.cgi?id=34759
+
+        * wx/build/settings.py:
+
 2010-02-10  Kevin Ollivier  <kevino at theolliviers.com>
 
         [wx] Build fix. Add stub for new LayoutTestController method.
diff --git a/WebKitTools/wx/build/settings.py b/WebKitTools/wx/build/settings.py
index 60a4db6..d3b7b2c 100644
--- a/WebKitTools/wx/build/settings.py
+++ b/WebKitTools/wx/build/settings.py
@@ -276,7 +276,9 @@ def common_configure(conf):
     if sys.platform.startswith('darwin'):
         conf.env['LIB_ICU'] = ['icucore']
         # Apple does not ship the ICU headers with Mac OS X, so WebKit includes a copy of 3.2 headers
-        conf.env['CPPPATH_ICU'] = [os.path.join(jscore_dir, 'icu'), os.path.join(webcore_dir, 'icu')]
+        conf.env.append_value('CPPPATH_JSCORE', os.path.join(jscore_dir, 'icu'))
+        
+        conf.env.append_value('CPPPATH_WEBCORE', os.path.join(webcore_dir, 'icu'))
     
         conf.env.append_value('CPPPATH', wklibs_dir)
         conf.env.append_value('LIBPATH', wklibs_dir)
@@ -335,7 +337,7 @@ def common_configure(conf):
         conf.env.append_value('LIB', [
             'kernel32', 'user32','gdi32','comdlg32','winspool','winmm',
             'shell32', 'shlwapi', 'comctl32', 'ole32', 'oleaut32', 'uuid', 'advapi32', 
-            'wsock32', 'gdiplus', 'version'])
+            'wsock32', 'gdiplus', 'usp10','version'])
 
         conf.env['LIB_ICU'] = ['icudt', 'icule', 'iculx', 'icuuc', 'icuin', 'icuio', 'icutu']
         

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list