Merge branch 'master' of https://github.com/wxWidgets/wxWidgets
This commit is contained in:
commit
c0cc4bec53
@ -2943,6 +2943,7 @@ typedef const void * CFTypeRef;
|
||||
|
||||
DECLARE_WXOSX_OPAQUE_CONST_CFREF( CFString )
|
||||
typedef struct __CFString * CFMutableStringRef;
|
||||
DECLARE_WXOSX_OPAQUE_CONST_CFREF( CFDictionary )
|
||||
|
||||
DECLARE_WXOSX_OPAQUE_CFREF( CFRunLoopSource )
|
||||
DECLARE_WXOSX_OPAQUE_CONST_CFREF( CTFont )
|
||||
|
@ -414,7 +414,7 @@ public:
|
||||
// Header attributes support: only implemented in wxMSW currently.
|
||||
virtual bool SetHeaderAttr(const wxItemAttr& WXUNUSED(attr)) { return false; }
|
||||
|
||||
// Checkboxes support: only implemented in wxMSW currently.
|
||||
// Checkboxes support.
|
||||
virtual bool HasCheckBoxes() const { return false; }
|
||||
virtual bool EnableCheckBoxes(bool WXUNUSED(enable) = true) { return false; }
|
||||
virtual bool IsItemChecked(long WXUNUSED(item)) const { return false; }
|
||||
|
@ -144,6 +144,7 @@ public:
|
||||
#endif
|
||||
|
||||
CTFontRef OSXGetCTFont() const;
|
||||
CFDictionaryRef OSXGetCTFontAttributes() const;
|
||||
|
||||
#if wxOSX_USE_COCOA
|
||||
WX_NSFont OSXGetNSFont() const;
|
||||
|
@ -1530,8 +1530,12 @@ public:
|
||||
virtual bool OnSaveModified();
|
||||
|
||||
/**
|
||||
Removes the view from the document's list of views, and calls
|
||||
OnChangedViewList().
|
||||
Removes the view from the document's list of views.
|
||||
|
||||
If the view was really removed, also calls OnChangedViewList().
|
||||
|
||||
@return @true if the view was removed or @false if the document didn't
|
||||
have this view in the first place.
|
||||
*/
|
||||
virtual bool RemoveView(wxView* view);
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
* Template for the set.h file for VMS *
|
||||
* Created from setup.h_in *
|
||||
* Author : J.Jansen (joukj@hrem.nano.tudelft.nl) *
|
||||
* Date : 25 April 2017 *
|
||||
* Date : 16 June 2017 *
|
||||
* *
|
||||
*****************************************************************************/
|
||||
|
||||
@ -208,6 +208,8 @@ typedef pid_t GPid;
|
||||
|
||||
#define wxUSE_UNSAFE_WXSTRING_CONV 1
|
||||
|
||||
#define wxUSE_REPRODUCIBLE_BUILD 1
|
||||
|
||||
#ifndef wxUSE_UNICODE
|
||||
#if defined( __WXX11__ )
|
||||
#define wxUSE_UNICODE 0
|
||||
|
@ -570,7 +570,9 @@ bool wxDocument::AddView(wxView *view)
|
||||
|
||||
bool wxDocument::RemoveView(wxView *view)
|
||||
{
|
||||
(void)m_documentViews.DeleteObject(view);
|
||||
if ( !m_documentViews.DeleteObject(view) )
|
||||
return false;
|
||||
|
||||
OnChangedViewList();
|
||||
return true;
|
||||
}
|
||||
|
@ -153,36 +153,10 @@ bool wxGTKCairoDCImpl::DoStretchBlit(int xdest, int ydest, int dstWidth, int dst
|
||||
// surface and use this copy in the drawing operations.
|
||||
if ( cr == cr_src )
|
||||
{
|
||||
// Check if destination and source regions overlap.
|
||||
bool regOverlap;
|
||||
#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 10, 0)
|
||||
if ( cairo_version() >= CAIRO_VERSION_ENCODE(1, 10, 0) )
|
||||
{
|
||||
cairo_rectangle_int_t rdst;
|
||||
rdst.x = xdest;
|
||||
rdst.y = ydest;
|
||||
rdst.width = dstWidth;
|
||||
rdst.height = dstHeight;
|
||||
cairo_region_t* regdst = cairo_region_create_rectangle(&rdst);
|
||||
|
||||
cairo_rectangle_int_t rsrc;
|
||||
rsrc.x = xsrc;
|
||||
rsrc.y = ysrc;
|
||||
rsrc.width = srcWidth;
|
||||
rsrc.height = srcHeight;
|
||||
cairo_region_overlap_t ov = cairo_region_contains_rectangle(regdst, &rsrc);
|
||||
cairo_region_destroy(regdst);
|
||||
regOverlap = (ov != CAIRO_REGION_OVERLAP_OUT);
|
||||
}
|
||||
else
|
||||
#endif // Cairo 1.10
|
||||
{
|
||||
wxRect rdst(xdest, ydest, dstWidth, dstHeight);
|
||||
wxRect rsrc(xsrc, ysrc, srcWidth, srcHeight);
|
||||
regOverlap = rdst.Intersects(rsrc);
|
||||
}
|
||||
// Check if destination and source regions overlap.
|
||||
// If necessary, copy source surface to the temporary one.
|
||||
if ( regOverlap )
|
||||
if (wxRect(xdest, ydest, dstWidth, dstHeight)
|
||||
.Intersects(wxRect(xsrc, ysrc, srcWidth, srcHeight)))
|
||||
{
|
||||
const int w = cairo_image_surface_get_width(surfaceSrc);
|
||||
const int h = cairo_image_surface_get_height(surfaceSrc);
|
||||
@ -247,7 +221,7 @@ bool wxGTKCairoDCImpl::DoStretchBlit(int xdest, int ydest, int dstWidth, int dst
|
||||
cairo_restore(cr);
|
||||
if ( surfaceTmp )
|
||||
{
|
||||
cairo_surface_destroy(surfaceTmp);
|
||||
cairo_surface_destroy(surfaceTmp);
|
||||
}
|
||||
m_logicalFunction = rop_save;
|
||||
return true;
|
||||
|
@ -801,11 +801,15 @@ wxString wxWebViewWebKit::GetCurrentTitle() const
|
||||
}
|
||||
|
||||
|
||||
static void wxgtk_web_resource_get_data_cb(WebKitWebResource *,
|
||||
extern "C" {
|
||||
static void wxgtk_web_resource_get_data_cb(GObject*,
|
||||
GAsyncResult *res,
|
||||
GAsyncResult **res_out)
|
||||
void* user_data)
|
||||
{
|
||||
*res_out = (GAsyncResult*)g_object_ref(res);
|
||||
GAsyncResult** res_out = static_cast<GAsyncResult**>(user_data);
|
||||
g_object_ref(res);
|
||||
*res_out = res;
|
||||
}
|
||||
}
|
||||
|
||||
wxString wxWebViewWebKit::GetPageSource() const
|
||||
@ -818,7 +822,7 @@ wxString wxWebViewWebKit::GetPageSource() const
|
||||
|
||||
GAsyncResult *result = NULL;
|
||||
webkit_web_resource_get_data(resource, NULL,
|
||||
(GAsyncReadyCallback)wxgtk_web_resource_get_data_cb,
|
||||
wxgtk_web_resource_get_data_cb,
|
||||
&result);
|
||||
|
||||
GMainContext *main_context = g_main_context_get_thread_default();
|
||||
@ -827,8 +831,9 @@ wxString wxWebViewWebKit::GetPageSource() const
|
||||
g_main_context_iteration(main_context, TRUE);
|
||||
}
|
||||
|
||||
size_t length;
|
||||
guchar *source = webkit_web_resource_get_data_finish(resource, result,
|
||||
NULL, NULL);
|
||||
&length, NULL);
|
||||
if (result)
|
||||
{
|
||||
g_object_unref(result);
|
||||
@ -836,7 +841,7 @@ wxString wxWebViewWebKit::GetPageSource() const
|
||||
|
||||
if (source)
|
||||
{
|
||||
wxString wxs = wxString(source, wxConvUTF8);
|
||||
wxString wxs(source, wxConvUTF8, length);
|
||||
free(source);
|
||||
return wxs;
|
||||
}
|
||||
|
@ -510,10 +510,10 @@ void wxStaticBox::OnPaint(wxPaintEvent& WXUNUSED(event))
|
||||
::GetClientRect(GetHwnd(), &rc);
|
||||
wxPaintDC dc(this);
|
||||
|
||||
// No need to do anything if the client rectangle is empty and, worse,
|
||||
// No need to do anything if the client rectangle is empty and, worse,
|
||||
// doing it would result in an assert when creating the bitmap below.
|
||||
if ( !rc.right || !rc.bottom )
|
||||
return;
|
||||
if ( !rc.right || !rc.bottom )
|
||||
return;
|
||||
|
||||
// draw the entire box in a memory DC
|
||||
wxMemoryDC memdc(&dc);
|
||||
|
@ -158,6 +158,7 @@ protected:
|
||||
public:
|
||||
bool m_fontValid;
|
||||
wxCFRef<CTFontRef> m_ctFont;
|
||||
wxCFRef<CFDictionaryRef> m_ctFontAttributes;
|
||||
wxCFRef<CGFontRef> m_cgFont;
|
||||
#if wxOSX_USE_COCOA
|
||||
WX_NSFont m_nsFont;
|
||||
@ -176,6 +177,7 @@ wxFontRefData::wxFontRefData(const wxFontRefData& data) : wxGDIRefData()
|
||||
m_info = data.m_info;
|
||||
m_fontValid = data.m_fontValid;
|
||||
m_ctFont = data.m_ctFont;
|
||||
m_ctFontAttributes = data.m_ctFontAttributes;
|
||||
m_cgFont = data.m_cgFont;
|
||||
#if wxOSX_USE_COCOA
|
||||
m_nsFont = (NSFont*) wxMacCocoaRetain(data.m_nsFont);
|
||||
@ -271,6 +273,11 @@ wxFontRefData::wxFontRefData(wxOSXSystemFont font, int size)
|
||||
break;
|
||||
}
|
||||
m_ctFont.reset(CTFontCreateUIFontForLanguage( uifont, (CGFloat) size, NULL ));
|
||||
CFMutableDictionaryRef dict = CFDictionaryCreateMutable(kCFAllocatorDefault, 0,&kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
|
||||
m_ctFontAttributes.reset(dict);
|
||||
CFDictionarySetValue(dict, kCTFontAttributeName, m_ctFont.get() );
|
||||
CFDictionarySetValue(dict, kCTForegroundColorFromContextAttributeName, kCFBooleanTrue);
|
||||
|
||||
wxCFRef<CTFontDescriptorRef> descr;
|
||||
descr.reset( CTFontCopyFontDescriptor( m_ctFont ) );
|
||||
m_info.Init(descr);
|
||||
@ -288,6 +295,16 @@ wxFontRefData::wxFontRefData(wxOSXSystemFont font, int size)
|
||||
|
||||
static const CGAffineTransform kSlantTransform = CGAffineTransformMake( 1, 0, tan(wxDegToRad(11)), 1, 0, 0 );
|
||||
|
||||
namespace
|
||||
{
|
||||
|
||||
struct CachedFontEntry {
|
||||
wxCFRef< CTFontRef > font;
|
||||
wxCFRef< CFDictionaryRef > fontAttributes;
|
||||
} ;
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
void wxFontRefData::MacFindFont()
|
||||
{
|
||||
if ( m_fontValid )
|
||||
@ -306,10 +323,19 @@ void wxFontRefData::MacFindFont()
|
||||
// use font caching
|
||||
wxString lookupnameWithSize = wxString::Format( "%s_%u_%d", m_info.m_faceName, traits, m_info.m_pointSize );
|
||||
|
||||
static std::map< std::wstring , wxCFRef< CTFontRef > > fontcache ;
|
||||
m_ctFont = fontcache[ std::wstring(lookupnameWithSize.wc_str()) ];
|
||||
if ( !m_ctFont )
|
||||
static std::map< wxString, CachedFontEntry > fontcache ;
|
||||
|
||||
CachedFontEntry& entry = fontcache[ lookupnameWithSize ];
|
||||
m_ctFont = entry.font;
|
||||
m_ctFontAttributes = entry.fontAttributes;
|
||||
if ( m_ctFont )
|
||||
{
|
||||
// use cached version
|
||||
}
|
||||
else
|
||||
{
|
||||
CFMutableDictionaryRef dict = CFDictionaryCreateMutable(kCFAllocatorDefault, 0,&kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
|
||||
m_ctFontAttributes.reset(dict);
|
||||
|
||||
wxStringToStringHashMap::const_iterator it = gs_FontFamilyToPSName.find(m_info.m_faceName);
|
||||
|
||||
@ -350,11 +376,23 @@ void wxFontRefData::MacFindFont()
|
||||
fontWithTraits = CTFontCreateCopyWithSymbolicTraits( m_ctFont, 0, remainingTransform, remainingTraits, remainingTraits );
|
||||
if ( fontWithTraits == NULL )
|
||||
{
|
||||
// give in on the bold, try native oblique
|
||||
// try native oblique, emulate bold later
|
||||
fontWithTraits = CTFontCreateCopyWithSymbolicTraits( m_ctFont, 0, NULL, kCTFontItalicTrait, kCTFontItalicTrait );
|
||||
}
|
||||
else
|
||||
{
|
||||
remainingTraits &= ~kCTFontBoldTrait;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// we have to emulate bold
|
||||
if ( remainingTraits & kCTFontBoldTrait )
|
||||
{
|
||||
// 3 times as thick, negative value because we want effect on stroke and fill (not only stroke)
|
||||
const float strokewidth = -3.0;
|
||||
CFDictionarySetValue(dict, kCTStrokeWidthAttributeName, CFNumberCreate( NULL, kCFNumberFloatType, &strokewidth));
|
||||
}
|
||||
|
||||
if ( fontWithTraits == NULL )
|
||||
{
|
||||
@ -366,6 +404,11 @@ void wxFontRefData::MacFindFont()
|
||||
m_ctFont.reset(fontWithTraits);
|
||||
}
|
||||
}
|
||||
CFDictionarySetValue(dict, kCTFontAttributeName, m_ctFont.get() );
|
||||
CFDictionarySetValue(dict, kCTForegroundColorFromContextAttributeName, kCFBooleanTrue);
|
||||
|
||||
entry.font = m_ctFont;
|
||||
entry.fontAttributes = m_ctFontAttributes;
|
||||
}
|
||||
|
||||
m_cgFont.reset(CTFontCopyGraphicsFont(m_ctFont, NULL));
|
||||
@ -378,7 +421,7 @@ void wxFontRefData::MacFindFont()
|
||||
#endif
|
||||
m_fontValid = true;
|
||||
}
|
||||
|
||||
|
||||
bool wxFontRefData::IsFixedWidth() const
|
||||
{
|
||||
CTFontSymbolicTraits traits = CTFontGetSymbolicTraits(m_ctFont);
|
||||
@ -659,6 +702,16 @@ CTFontRef wxFont::OSXGetCTFont() const
|
||||
return (CTFontRef)(M_FONTDATA->m_ctFont);
|
||||
}
|
||||
|
||||
CFDictionaryRef wxFont::OSXGetCTFontAttributes() const
|
||||
{
|
||||
wxCHECK_MSG( M_FONTDATA != NULL , NULL, wxT("invalid font") );
|
||||
|
||||
// cast away constness otherwise lazy font resolution is not possible
|
||||
const_cast<wxFont *>(this)->RealizeResource();
|
||||
|
||||
return (CFDictionaryRef)(M_FONTDATA->m_ctFontAttributes);
|
||||
}
|
||||
|
||||
#if wxOSX_USE_COCOA_OR_CARBON
|
||||
|
||||
CGFontRef wxFont::OSXGetCGFont() const
|
||||
|
@ -824,6 +824,7 @@ public:
|
||||
~wxMacCoreGraphicsFontData();
|
||||
|
||||
CTFontRef OSXGetCTFont() const { return m_ctFont ; }
|
||||
CFDictionaryRef OSXGetCTFontAttributes() const { return m_ctFontAttributes; }
|
||||
wxColour GetColour() const { return m_colour ; }
|
||||
|
||||
bool GetUnderlined() const { return m_underlined ; }
|
||||
@ -837,6 +838,7 @@ private :
|
||||
bool m_underlined,
|
||||
m_strikethrough;
|
||||
wxCFRef< CTFontRef > m_ctFont;
|
||||
wxCFRef< CFDictionaryRef > m_ctFontAttributes;
|
||||
#if wxOSX_USE_IPHONE
|
||||
UIFont* m_uiFont;
|
||||
#endif
|
||||
@ -849,6 +851,7 @@ wxMacCoreGraphicsFontData::wxMacCoreGraphicsFontData(wxGraphicsRenderer* rendere
|
||||
m_strikethrough = font.GetStrikethrough();
|
||||
|
||||
m_ctFont.reset( wxMacCreateCTFont( font ) );
|
||||
m_ctFontAttributes.reset( wxCFRetain( font.OSXGetCTFontAttributes() ) );
|
||||
#if wxOSX_USE_IPHONE
|
||||
m_uiFont = CreateUIFont(font);
|
||||
wxMacCocoaRetain( m_uiFont );
|
||||
@ -2220,21 +2223,10 @@ void wxMacCoreGraphicsContext::DoDrawText( const wxString &str, wxDouble x, wxDo
|
||||
|
||||
wxMacCoreGraphicsFontData* fref = (wxMacCoreGraphicsFontData*)m_font.GetRefData();
|
||||
wxCFStringRef text(str, wxLocale::GetSystemEncoding() );
|
||||
CTFontRef font = fref->OSXGetCTFont();
|
||||
CGColorRef col = wxMacCreateCGColor( fref->GetColour() );
|
||||
#if 0
|
||||
// right now there's no way to get continuous underlines, only words, so we emulate it
|
||||
CTUnderlineStyle ustyle = fref->GetUnderlined() ? kCTUnderlineStyleSingle : kCTUnderlineStyleNone ;
|
||||
wxCFRef<CFNumberRef> underlined( CFNumberCreate(NULL, kCFNumberSInt32Type, &ustyle) );
|
||||
CFStringRef keys[] = { kCTFontAttributeName , kCTForegroundColorAttributeName, kCTUnderlineStyleAttributeName };
|
||||
CFTypeRef values[] = { font, col, underlined };
|
||||
#else
|
||||
CFStringRef keys[] = { kCTFontAttributeName , kCTForegroundColorAttributeName };
|
||||
CFTypeRef values[] = { font, col };
|
||||
#endif
|
||||
wxCFRef<CFDictionaryRef> attributes( CFDictionaryCreate(kCFAllocatorDefault, (const void**) &keys, (const void**) &values,
|
||||
WXSIZEOF( keys ), &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks) );
|
||||
wxCFRef<CFAttributedStringRef> attrtext( CFAttributedStringCreate(kCFAllocatorDefault, text, attributes) );
|
||||
CTFontRef font = fref->OSXGetCTFont();
|
||||
|
||||
wxCFRef<CFAttributedStringRef> attrtext( CFAttributedStringCreate(kCFAllocatorDefault, text, fref->OSXGetCTFontAttributes()) );
|
||||
wxCFRef<CTLineRef> line( CTLineCreateWithAttributedString(attrtext) );
|
||||
|
||||
y += CTFontGetAscent(font);
|
||||
@ -2246,6 +2238,7 @@ void wxMacCoreGraphicsContext::DoDrawText( const wxString &str, wxDouble x, wxDo
|
||||
CGContextScaleCTM(m_cgContext, 1, -1);
|
||||
CGContextSetTextMatrix(m_cgContext, CGAffineTransformIdentity);
|
||||
|
||||
CGContextSetFillColorWithColor( m_cgContext, col );
|
||||
CTLineDraw( line, m_cgContext );
|
||||
|
||||
if ( fref->GetUnderlined() ) {
|
||||
@ -2316,14 +2309,10 @@ void wxMacCoreGraphicsContext::GetTextExtent( const wxString &str, wxDouble *wid
|
||||
strToMeasure = wxS(" ");
|
||||
|
||||
wxMacCoreGraphicsFontData* fref = (wxMacCoreGraphicsFontData*)m_font.GetRefData();
|
||||
CTFontRef font = fref->OSXGetCTFont();
|
||||
|
||||
wxCFStringRef text(strToMeasure, wxLocale::GetSystemEncoding() );
|
||||
CFStringRef keys[] = { kCTFontAttributeName };
|
||||
CFTypeRef values[] = { font };
|
||||
wxCFRef<CFDictionaryRef> attributes( CFDictionaryCreate(kCFAllocatorDefault, (const void**) &keys, (const void**) &values,
|
||||
WXSIZEOF( keys ), &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks) );
|
||||
wxCFRef<CFAttributedStringRef> attrtext( CFAttributedStringCreate(kCFAllocatorDefault, text, attributes) );
|
||||
|
||||
wxCFRef<CFAttributedStringRef> attrtext( CFAttributedStringCreate(kCFAllocatorDefault, text, fref->OSXGetCTFontAttributes() ) );
|
||||
wxCFRef<CTLineRef> line( CTLineCreateWithAttributedString(attrtext) );
|
||||
|
||||
CGFloat a, d, l, w;
|
||||
@ -2336,7 +2325,6 @@ void wxMacCoreGraphicsContext::GetTextExtent( const wxString &str, wxDouble *wid
|
||||
if ( height )
|
||||
*height = a+d+l;
|
||||
}
|
||||
|
||||
if ( descent )
|
||||
*descent = d;
|
||||
if ( externalLeading )
|
||||
@ -2355,14 +2343,9 @@ void wxMacCoreGraphicsContext::GetPartialTextExtents(const wxString& text, wxArr
|
||||
return;
|
||||
|
||||
wxMacCoreGraphicsFontData* fref = (wxMacCoreGraphicsFontData*)m_font.GetRefData();
|
||||
CTFontRef font = fref->OSXGetCTFont();
|
||||
|
||||
wxCFStringRef t(text, wxLocale::GetSystemEncoding() );
|
||||
CFStringRef keys[] = { kCTFontAttributeName };
|
||||
CFTypeRef values[] = { font };
|
||||
wxCFRef<CFDictionaryRef> attributes( CFDictionaryCreate(kCFAllocatorDefault, (const void**) &keys, (const void**) &values,
|
||||
WXSIZEOF( keys ), &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks) );
|
||||
wxCFRef<CFAttributedStringRef> attrtext( CFAttributedStringCreate(kCFAllocatorDefault, t, attributes) );
|
||||
wxCFRef<CFAttributedStringRef> attrtext( CFAttributedStringCreate(kCFAllocatorDefault, t, fref->OSXGetCTFontAttributes()) );
|
||||
wxCFRef<CTLineRef> line( CTLineCreateWithAttributedString(attrtext) );
|
||||
|
||||
widths.reserve(text.length());
|
||||
|
@ -44,7 +44,7 @@
|
||||
inline bool wxHasCGContext(wxWindow* WXUNUSED(win), wxDC& dc)
|
||||
{
|
||||
wxGCDCImpl* gcdc = wxDynamicCast( dc.GetImpl() , wxGCDCImpl);
|
||||
|
||||
|
||||
if ( gcdc )
|
||||
{
|
||||
if ( gcdc->GetGraphicsContext()->GetNativeContext() )
|
||||
@ -218,7 +218,7 @@ int wxRendererMac::DrawHeaderButton( wxWindow *win,
|
||||
{
|
||||
drawInfo.value = kThemeButtonOn;
|
||||
}
|
||||
|
||||
|
||||
HIThemeDrawButton( &headerRect, &drawInfo, cgContext, kHIThemeOrientationNormal, &labelRect );
|
||||
}
|
||||
}
|
||||
@ -730,22 +730,22 @@ void wxRendererMac::DrawTitleBarBitmap(wxWindow *win,
|
||||
drawCircle = false;
|
||||
glyphColor = wxColour(145, 147, 149);
|
||||
}
|
||||
|
||||
|
||||
if ( drawCircle )
|
||||
{
|
||||
wxRect circleRect(rect);
|
||||
circleRect.Deflate(2);
|
||||
|
||||
|
||||
dc.DrawEllipse(circleRect);
|
||||
}
|
||||
|
||||
|
||||
dc.SetPen(wxPen(glyphColor, 1));
|
||||
|
||||
|
||||
wxRect centerRect(rect);
|
||||
centerRect.Deflate(5);
|
||||
centerRect.height++;
|
||||
centerRect.width++;
|
||||
|
||||
|
||||
dc.DrawLine(centerRect.GetTopLeft(), centerRect.GetBottomRight());
|
||||
dc.DrawLine(centerRect.GetTopRight(), centerRect.GetBottomLeft());
|
||||
}
|
||||
|
@ -145,7 +145,7 @@ public :
|
||||
|
||||
virtual void controlDoubleAction(WXWidget slf, void* _cmd, void *sender) wxOVERRIDE;
|
||||
|
||||
|
||||
|
||||
protected :
|
||||
wxNSTableView* m_tableView ;
|
||||
|
||||
@ -293,9 +293,9 @@ protected:
|
||||
- (void) tableViewSelectionDidChange: (NSNotification *) notification
|
||||
{
|
||||
wxUnusedVar(notification);
|
||||
|
||||
|
||||
int row = [self selectedRow];
|
||||
|
||||
|
||||
if (row == -1)
|
||||
{
|
||||
// no row selected
|
||||
@ -305,14 +305,14 @@ protected:
|
||||
wxWidgetCocoaImpl* impl = (wxWidgetCocoaImpl* ) wxWidgetImpl::FindFromWXWidget( self );
|
||||
wxListBox *list = static_cast<wxListBox*> ( impl->GetWXPeer());
|
||||
wxCHECK_RET( list != NULL , wxT("Listbox expected"));
|
||||
|
||||
|
||||
if ((row < 0) || (row > (int) list->GetCount())) // OS X can select an item below the last item
|
||||
return;
|
||||
|
||||
|
||||
if ( !list->MacGetBlockEvents() )
|
||||
list->HandleLineEvent( row, false );
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
- (void)setFont:(NSFont *)aFont
|
||||
@ -388,11 +388,11 @@ wxListWidgetColumn* wxListWidgetCocoaImpl::InsertTextColumn( unsigned pos, const
|
||||
[col1 setWidth:1000];
|
||||
}
|
||||
[col1 setResizingMask: NSTableColumnAutoresizingMask];
|
||||
|
||||
|
||||
wxListBox *list = static_cast<wxListBox*> ( GetWXPeer());
|
||||
if ( list != NULL )
|
||||
[[col1 dataCell] setFont:list->GetFont().OSXGetNSFont()];
|
||||
|
||||
|
||||
wxCocoaTableColumn* wxcol = new wxCocoaTableColumn( col1, editable );
|
||||
[col1 setColumn:wxcol];
|
||||
|
||||
@ -412,30 +412,30 @@ wxListWidgetColumn* wxListWidgetCocoaImpl::InsertCheckColumn( unsigned pos , con
|
||||
[checkbox setTitle:@""];
|
||||
[checkbox setButtonType:NSSwitchButton];
|
||||
[col1 setDataCell:checkbox] ;
|
||||
|
||||
|
||||
wxListBox *list = static_cast<wxListBox*> ( GetWXPeer());
|
||||
if ( list != NULL )
|
||||
{
|
||||
NSControlSize size = NSRegularControlSize;
|
||||
|
||||
|
||||
switch ( list->GetWindowVariant() )
|
||||
{
|
||||
case wxWINDOW_VARIANT_NORMAL :
|
||||
size = NSRegularControlSize;
|
||||
break ;
|
||||
|
||||
|
||||
case wxWINDOW_VARIANT_SMALL :
|
||||
size = NSSmallControlSize;
|
||||
break ;
|
||||
|
||||
|
||||
case wxWINDOW_VARIANT_MINI :
|
||||
size = NSMiniControlSize;
|
||||
break ;
|
||||
|
||||
|
||||
case wxWINDOW_VARIANT_LARGE :
|
||||
size = NSRegularControlSize;
|
||||
break ;
|
||||
|
||||
|
||||
default:
|
||||
break ;
|
||||
}
|
||||
@ -502,7 +502,7 @@ void wxListWidgetCocoaImpl::ListSetSelection( unsigned int n, bool select, bool
|
||||
// TODO
|
||||
if ( select )
|
||||
[m_tableView selectRowIndexes:[NSIndexSet indexSetWithIndex:n]
|
||||
byExtendingSelection:multi];
|
||||
byExtendingSelection:multi];
|
||||
else
|
||||
[m_tableView deselectRow: n];
|
||||
|
||||
|
@ -60,7 +60,7 @@ static void *AVSPPlayerItemStatusContext = &AVSPPlayerItemStatusContext;
|
||||
static void *AVSPPlayerRateContext = &AVSPPlayerRateContext;
|
||||
|
||||
@interface wxAVPlayer : AVPlayer {
|
||||
|
||||
|
||||
AVPlayerLayer *playerLayer;
|
||||
|
||||
wxAVMediaBackend* m_backend;
|
||||
@ -75,10 +75,10 @@ static void *AVSPPlayerRateContext = &AVSPPlayerRateContext;
|
||||
class WXDLLIMPEXP_MEDIA wxAVMediaBackend : public wxMediaBackendCommonBase
|
||||
{
|
||||
public:
|
||||
|
||||
|
||||
wxAVMediaBackend();
|
||||
~wxAVMediaBackend();
|
||||
|
||||
|
||||
virtual bool CreateControl(wxControl* ctrl, wxWindow* parent,
|
||||
wxWindowID id,
|
||||
const wxPoint& pos,
|
||||
@ -86,41 +86,41 @@ public:
|
||||
long style,
|
||||
const wxValidator& validator,
|
||||
const wxString& name) wxOVERRIDE;
|
||||
|
||||
|
||||
virtual bool Play() wxOVERRIDE;
|
||||
virtual bool Pause() wxOVERRIDE;
|
||||
virtual bool Stop() wxOVERRIDE;
|
||||
|
||||
|
||||
virtual bool Load(const wxString& fileName) wxOVERRIDE;
|
||||
virtual bool Load(const wxURI& location) wxOVERRIDE;
|
||||
|
||||
|
||||
virtual wxMediaState GetState() wxOVERRIDE;
|
||||
|
||||
|
||||
virtual bool SetPosition(wxLongLong where) wxOVERRIDE;
|
||||
virtual wxLongLong GetPosition() wxOVERRIDE;
|
||||
virtual wxLongLong GetDuration() wxOVERRIDE;
|
||||
|
||||
|
||||
virtual void Move(int x, int y, int w, int h) wxOVERRIDE;
|
||||
wxSize GetVideoSize() const wxOVERRIDE;
|
||||
|
||||
|
||||
virtual double GetPlaybackRate() wxOVERRIDE;
|
||||
virtual bool SetPlaybackRate(double dRate) wxOVERRIDE;
|
||||
|
||||
|
||||
virtual double GetVolume() wxOVERRIDE;
|
||||
virtual bool SetVolume(double dVolume) wxOVERRIDE;
|
||||
|
||||
|
||||
void Cleanup();
|
||||
void FinishLoad();
|
||||
|
||||
|
||||
virtual bool ShowPlayerControls(wxMediaCtrlPlayerControls flags) wxOVERRIDE;
|
||||
private:
|
||||
void DoShowPlayerControls(wxMediaCtrlPlayerControls flags);
|
||||
|
||||
|
||||
wxSize m_bestSize; //Original movie size
|
||||
wxAVPlayer* m_player; //AVPlayer handle/instance
|
||||
|
||||
|
||||
wxMediaCtrlPlayerControls m_interfaceflags; // Saved interface flags
|
||||
|
||||
|
||||
wxDECLARE_DYNAMIC_CLASS(wxAVMediaBackend);
|
||||
};
|
||||
|
||||
@ -146,19 +146,19 @@ private:
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
[playerLayer release];
|
||||
[playerLayer release];
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||
|
||||
|
||||
[self removeObserver:self forKeyPath:@"rate" context:AVSPPlayerRateContext];
|
||||
[self removeObserver:self forKeyPath:@"currentItem.status" context:AVSPPlayerItemStatusContext];
|
||||
|
||||
[super dealloc];
|
||||
[self removeObserver:self forKeyPath:@"currentItem.status" context:AVSPPlayerItemStatusContext];
|
||||
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
|
||||
{
|
||||
if (context == AVSPPlayerItemStatusContext)
|
||||
{
|
||||
if (context == AVSPPlayerItemStatusContext)
|
||||
{
|
||||
id val = [change objectForKey:NSKeyValueChangeNewKey];
|
||||
if ( val != [NSNull null ] )
|
||||
{
|
||||
@ -180,10 +180,10 @@ private:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (context == AVSPPlayerRateContext)
|
||||
{
|
||||
NSNumber* newRate = [change objectForKey:NSKeyValueChangeNewKey];
|
||||
}
|
||||
else if (context == AVSPPlayerRateContext)
|
||||
{
|
||||
NSNumber* newRate = [change objectForKey:NSKeyValueChangeNewKey];
|
||||
if ([newRate intValue] == 0)
|
||||
{
|
||||
m_backend->QueuePauseEvent();
|
||||
@ -192,11 +192,11 @@ private:
|
||||
{
|
||||
m_backend->QueuePlayEvent();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
|
||||
}
|
||||
}
|
||||
|
||||
-(wxAVMediaBackend*) backend
|
||||
@ -220,12 +220,12 @@ private:
|
||||
|
||||
-(BOOL)isPlaying
|
||||
{
|
||||
if ([self rate] == 0)
|
||||
{
|
||||
return NO;
|
||||
}
|
||||
|
||||
return YES;
|
||||
if ([self rate] == 0)
|
||||
{
|
||||
return NO;
|
||||
}
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
@end
|
||||
@ -252,7 +252,7 @@ private:
|
||||
|
||||
+ (Class)layerClass
|
||||
{
|
||||
return [AVPlayerLayer class];
|
||||
return [AVPlayerLayer class];
|
||||
}
|
||||
|
||||
- (id) initWithFrame:(CGRect)rect player:(wxAVPlayer*) player
|
||||
@ -342,7 +342,7 @@ private:
|
||||
[playerlayer setAutoresizingMask:kCALayerWidthSizable | kCALayerHeightSizable];
|
||||
[[self layer] addSublayer:playerlayer];
|
||||
}
|
||||
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
@ -377,9 +377,9 @@ bool wxAVMediaBackend::CreateControl(wxControl* inctrl, wxWindow* parent,
|
||||
const wxString& name)
|
||||
{
|
||||
wxMediaCtrl* mediactrl = (wxMediaCtrl*) inctrl;
|
||||
|
||||
|
||||
mediactrl->DontCreatePeer();
|
||||
|
||||
|
||||
if ( !mediactrl->wxControl::Create(
|
||||
parent, wid, pos, size,
|
||||
wxWindow::MacRemoveBordersFromStyle(style),
|
||||
@ -392,7 +392,7 @@ bool wxAVMediaBackend::CreateControl(wxControl* inctrl, wxWindow* parent,
|
||||
[m_player setBackend:this];
|
||||
|
||||
WXRect r = wxOSXGetFrameForControl( mediactrl, pos , size ) ;
|
||||
|
||||
|
||||
WXWidget view = NULL;
|
||||
#if wxOSX_USE_AVKIT
|
||||
if ( NSClassFromString(@"AVPlayerView") )
|
||||
@ -401,12 +401,12 @@ bool wxAVMediaBackend::CreateControl(wxControl* inctrl, wxWindow* parent,
|
||||
[(wxAVPlayerView*) view setControlsStyle:AVPlayerViewControlsStyleNone];
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
if ( view == NULL )
|
||||
{
|
||||
view = [[wxAVView alloc] initWithFrame: r player:m_player];
|
||||
}
|
||||
|
||||
|
||||
#if wxOSX_USE_IPHONE
|
||||
wxWidgetIPhoneImpl* impl = new wxWidgetIPhoneImpl(mediactrl,view);
|
||||
#else
|
||||
@ -431,16 +431,16 @@ bool wxAVMediaBackend::Load(const wxURI& location)
|
||||
{
|
||||
wxCFStringRef uri(location.BuildURI());
|
||||
NSURL *url = [NSURL URLWithString: uri.AsNSString()];
|
||||
|
||||
|
||||
AVAsset* asset = [AVAsset assetWithURL:url];
|
||||
if (! asset )
|
||||
return false;
|
||||
|
||||
|
||||
if ( [asset isPlayable] )
|
||||
{
|
||||
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:asset];
|
||||
[m_player replaceCurrentItemWithPlayerItem:playerItem];
|
||||
|
||||
|
||||
return playerItem != nil;
|
||||
}
|
||||
return false;
|
||||
@ -449,12 +449,12 @@ bool wxAVMediaBackend::Load(const wxURI& location)
|
||||
void wxAVMediaBackend::FinishLoad()
|
||||
{
|
||||
DoShowPlayerControls(m_interfaceflags);
|
||||
|
||||
|
||||
AVPlayerItem *playerItem = [m_player currentItem];
|
||||
|
||||
|
||||
CGSize s = [playerItem presentationSize];
|
||||
m_bestSize = wxSize(s.width, s.height);
|
||||
|
||||
|
||||
NotifyMovieLoaded();
|
||||
}
|
||||
|
||||
@ -500,7 +500,7 @@ bool wxAVMediaBackend::SetPlaybackRate(double dRate)
|
||||
|
||||
bool wxAVMediaBackend::SetPosition(wxLongLong where)
|
||||
{
|
||||
[m_player seekToTime:CMTimeMakeWithSeconds(where.GetValue() / 1000.0, 1)
|
||||
[m_player seekToTime:CMTimeMakeWithSeconds(where.GetValue() / 1000.0, 1)
|
||||
toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero];
|
||||
|
||||
return true;
|
||||
@ -514,11 +514,11 @@ wxLongLong wxAVMediaBackend::GetPosition()
|
||||
wxLongLong wxAVMediaBackend::GetDuration()
|
||||
{
|
||||
AVPlayerItem *playerItem = [m_player currentItem];
|
||||
|
||||
if ([playerItem status] == AVPlayerItemStatusReadyToPlay)
|
||||
return CMTimeGetSeconds([[playerItem asset] duration])*1000.0;
|
||||
else
|
||||
return 0.f;
|
||||
|
||||
if ([playerItem status] == AVPlayerItemStatusReadyToPlay)
|
||||
return CMTimeGetSeconds([[playerItem asset] duration])*1000.0;
|
||||
else
|
||||
return 0.f;
|
||||
}
|
||||
|
||||
wxMediaState wxAVMediaBackend::GetState()
|
||||
@ -555,7 +555,7 @@ bool wxAVMediaBackend::ShowPlayerControls(wxMediaCtrlPlayerControls flags)
|
||||
{
|
||||
if ( m_interfaceflags != flags )
|
||||
DoShowPlayerControls(flags);
|
||||
|
||||
|
||||
m_interfaceflags = flags;
|
||||
return true;
|
||||
}
|
||||
|
@ -238,8 +238,7 @@ protected :
|
||||
- (BOOL)textFieldShouldReturn:(UITextField *)textField
|
||||
{
|
||||
wxUnusedVar(textField);
|
||||
|
||||
|
||||
|
||||
return NO;
|
||||
}
|
||||
|
||||
@ -317,7 +316,7 @@ wxUITextViewControl::wxUITextViewControl( wxTextCtrl *wxPeer, UITextView* v) :
|
||||
{
|
||||
m_textView = v;
|
||||
m_delegate= [[wxUITextViewDelegate alloc] init];
|
||||
|
||||
|
||||
[m_textView setDelegate:m_delegate];
|
||||
}
|
||||
|
||||
@ -423,7 +422,7 @@ void wxUITextViewControl::WriteText(const wxString& str)
|
||||
wxString st = str;
|
||||
wxMacConvertNewlines10To13( &st );
|
||||
wxMacEditHelper helper(m_textView);
|
||||
|
||||
|
||||
wxCFStringRef insert( st , m_wxPeer->GetFont().GetEncoding() );
|
||||
NSMutableString* subst = [NSMutableString stringWithString:[m_textView text]];
|
||||
[subst replaceCharactersInRange:[m_textView selectedRange] withString:insert.AsNSString()];
|
||||
@ -466,10 +465,10 @@ bool wxUITextViewControl::GetStyle(long position, wxTextAttr& style)
|
||||
/*
|
||||
if (font)
|
||||
style.SetFont(wxFont(font));
|
||||
|
||||
|
||||
if (bgcolor)
|
||||
style.SetBackgroundColour(wxColour(bgcolor));
|
||||
|
||||
|
||||
if (fgcolor)
|
||||
style.SetTextColour(wxColour(fgcolor));
|
||||
*/
|
||||
@ -489,15 +488,15 @@ void wxUITextViewControl::SetStyle(long start,
|
||||
range = [m_textView selectedRange];
|
||||
/*
|
||||
UITextStorage* storage = [m_textView textStorage];
|
||||
|
||||
|
||||
wxFont font = style.GetFont();
|
||||
if (style.HasFont() && font.IsOk())
|
||||
[storage addAttribute:NSFontAttributeName value:font.OSXGetNSFont() range:range];
|
||||
|
||||
|
||||
wxColour bgcolor = style.GetBackgroundColour();
|
||||
if (style.HasBackgroundColour() && bgcolor.IsOk())
|
||||
[storage addAttribute:NSBackgroundColorAttributeName value:bgcolor.OSXGetNSColor() range:range];
|
||||
|
||||
|
||||
wxColour fgcolor = style.GetTextColour();
|
||||
if (style.HasTextColour() && fgcolor.IsOk())
|
||||
[storage addAttribute:NSForegroundColorAttributeName value:fgcolor.OSXGetNSColor() range:range];
|
||||
@ -512,9 +511,9 @@ void wxUITextViewControl::CheckSpelling(bool check)
|
||||
wxSize wxUITextViewControl::GetBestSize() const
|
||||
{
|
||||
wxRect r;
|
||||
|
||||
|
||||
GetBestRect(&r);
|
||||
|
||||
|
||||
/*
|
||||
if (m_textView && [m_textView layoutManager])
|
||||
{
|
||||
@ -526,7 +525,7 @@ wxSize wxUITextViewControl::GetBestSize() const
|
||||
}
|
||||
return wxSize(0,0);
|
||||
*/
|
||||
|
||||
|
||||
wxSize sz = r.GetSize();
|
||||
if ( sz.y < 31 )
|
||||
sz.y = 31;
|
||||
@ -571,7 +570,7 @@ void wxUITextFieldControl::SetStringValue( const wxString &str)
|
||||
wxSize wxUITextFieldControl::GetBestSize() const
|
||||
{
|
||||
wxRect r;
|
||||
|
||||
|
||||
GetBestRect(&r);
|
||||
wxSize sz = r.GetSize();
|
||||
if ( sz.y < 31 )
|
||||
@ -605,7 +604,7 @@ void wxUITextFieldControl::SetEditable(bool editable)
|
||||
if ( !editable ) {
|
||||
[m_textField resignFirstResponder];
|
||||
}
|
||||
|
||||
|
||||
[m_textField setEnabled: editable];
|
||||
}
|
||||
}
|
||||
@ -710,7 +709,7 @@ wxWidgetImplType* wxWidgetImpl::CreateTextControl( wxTextCtrl* wxpeer,
|
||||
UITextView * v = nil;
|
||||
v = [[UITextView alloc] initWithFrame:r];
|
||||
tv = v;
|
||||
|
||||
|
||||
wxUITextViewControl* tc = new wxUITextViewControl( wxpeer, v );
|
||||
c = tc;
|
||||
t = tc;
|
||||
@ -721,39 +720,39 @@ wxWidgetImplType* wxWidgetImpl::CreateTextControl( wxTextCtrl* wxpeer,
|
||||
wxUITextField* v = [[wxUITextField alloc] initWithFrame:r];
|
||||
tv = v;
|
||||
|
||||
v.textColor = [UIColor blackColor];
|
||||
v.font = [UIFont systemFontOfSize:17.0];
|
||||
v.backgroundColor = [UIColor whiteColor];
|
||||
|
||||
v.clearButtonMode = UITextFieldViewModeNever;
|
||||
|
||||
v.textColor = [UIColor blackColor];
|
||||
v.font = [UIFont systemFontOfSize:17.0];
|
||||
v.backgroundColor = [UIColor whiteColor];
|
||||
|
||||
v.clearButtonMode = UITextFieldViewModeNever;
|
||||
|
||||
[v setBorderStyle:UITextBorderStyleBezel];
|
||||
if ( style & wxNO_BORDER )
|
||||
v.borderStyle = UITextBorderStyleNone;
|
||||
|
||||
|
||||
wxUITextFieldControl* tc = new wxUITextFieldControl( wxpeer, v );
|
||||
c = tc;
|
||||
t = tc;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
if ( style & wxTE_PASSWORD )
|
||||
[tv setSecureTextEntry:YES];
|
||||
|
||||
|
||||
if ( style & wxTE_CAPITALIZE )
|
||||
[tv setAutocapitalizationType:UITextAutocapitalizationTypeWords];
|
||||
else
|
||||
[tv setAutocapitalizationType:UITextAutocapitalizationTypeSentences];
|
||||
|
||||
|
||||
if ( !(style & wxTE_MULTILINE) )
|
||||
{
|
||||
[tv setAutocorrectionType:UITextAutocorrectionTypeNo];
|
||||
[tv setReturnKeyType:UIReturnKeyDone];
|
||||
[tv setReturnKeyType:UIReturnKeyDone];
|
||||
}
|
||||
[tv setKeyboardType:UIKeyboardTypeDefault];
|
||||
|
||||
|
||||
t->SetStringValue(str);
|
||||
|
||||
|
||||
return c;
|
||||
}
|
||||
|
||||
|
@ -68,7 +68,7 @@
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
[super dealloc];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
|
||||
|
@ -221,7 +221,7 @@ void wxWindowMac::Init()
|
||||
wxWindowMac::~wxWindowMac()
|
||||
{
|
||||
SendDestroyEvent();
|
||||
|
||||
|
||||
#if wxUSE_HOTKEY && wxOSX_USE_COCOA_OR_CARBON
|
||||
for ( int i = s_hotkeys.size()-1; i>=0; -- i )
|
||||
{
|
||||
@ -310,10 +310,10 @@ void wxWindowMac::SetWrappingPeer(wxOSXWidgetImpl* wrapper)
|
||||
wxOSXWidgetImpl* inner = GetPeer();
|
||||
wxASSERT_MSG( inner != NULL && inner->IsOk(), "missing or incomplete inner peer" );
|
||||
wxASSERT_MSG( wrapper != NULL && wrapper->IsOk(), "missing or incomplete wrapper" );
|
||||
|
||||
|
||||
if ( !(inner != NULL && inner->IsOk() && wrapper != NULL && wrapper->IsOk()) )
|
||||
return;
|
||||
|
||||
|
||||
inner->RemoveFromParent();
|
||||
wrapper->InstallEventHandler();
|
||||
wrapper->Embed(inner);
|
||||
@ -334,28 +334,28 @@ void wxWindowMac::SetPeer(wxOSXWidgetImpl* peer)
|
||||
if ( GetPeer() && !GetPeer()->IsRootControl())
|
||||
{
|
||||
wxASSERT_MSG( GetPeer()->IsOk() , wxT("The native control must exist already") ) ;
|
||||
|
||||
|
||||
if (!GetParent()->GetChildren().Find((wxWindow*)this))
|
||||
GetParent()->AddChild( this );
|
||||
|
||||
|
||||
GetPeer()->InstallEventHandler();
|
||||
GetPeer()->Embed(GetParent()->GetPeer());
|
||||
|
||||
|
||||
GetParent()->MacChildAdded() ;
|
||||
|
||||
|
||||
// adjust font, controlsize etc
|
||||
GetPeer()->SetControlSize( m_windowVariant );
|
||||
InheritAttributes();
|
||||
// in case nothing has been set, use the variant default fonts
|
||||
if ( !m_hasFont )
|
||||
DoSetWindowVariant( m_windowVariant );
|
||||
|
||||
|
||||
GetPeer()->SetInitialLabel( wxStripMenuCodes(m_label, wxStrip_Mnemonics), GetFont().GetEncoding() ) ;
|
||||
|
||||
|
||||
// for controls we want to use best size for wxDefaultSize params )
|
||||
if ( !GetPeer()->IsUserPane() )
|
||||
SetInitialSize(GetMinSize());
|
||||
|
||||
|
||||
SetCursor( *wxSTANDARD_CURSOR ) ;
|
||||
}
|
||||
}
|
||||
@ -859,16 +859,16 @@ void wxWindowMac::DoGetClientSize( int *x, int *y ) const
|
||||
// we shouldn't return invalid width
|
||||
if ( ww < 0 )
|
||||
ww = 0;
|
||||
|
||||
|
||||
*x = ww;
|
||||
}
|
||||
|
||||
|
||||
if (y)
|
||||
{
|
||||
// we shouldn't return invalid height
|
||||
if ( hh < 0 )
|
||||
hh = 0;
|
||||
|
||||
|
||||
*y = hh;
|
||||
}
|
||||
}
|
||||
@ -1244,7 +1244,7 @@ bool wxWindowMac::Show(bool show)
|
||||
{
|
||||
if ( !show )
|
||||
MacInvalidateBorders();
|
||||
|
||||
|
||||
if ( !wxWindowBase::Show(show) )
|
||||
return false;
|
||||
|
||||
@ -1375,7 +1375,7 @@ void wxWindowMac::Refresh(bool WXUNUSED(eraseBack), const wxRect *rect)
|
||||
|
||||
if ( !IsShownOnScreen() )
|
||||
return ;
|
||||
|
||||
|
||||
if ( IsFrozen() )
|
||||
return;
|
||||
|
||||
@ -1999,7 +1999,7 @@ bool wxWindowMac::MacDoRedraw( long time )
|
||||
wxNonOwnedWindow* top = MacGetTopLevelWindow();
|
||||
if (top)
|
||||
top->WindowWasPainted() ;
|
||||
|
||||
|
||||
return handled;
|
||||
}
|
||||
|
||||
@ -2302,14 +2302,14 @@ long wxWindowMac::MacGetLeftBorderSize() const
|
||||
{
|
||||
// the wx borders are all symmetric in mac themes
|
||||
long border = MacGetWXBorderSize() ;
|
||||
|
||||
|
||||
if ( GetPeer() )
|
||||
{
|
||||
int left, top, right, bottom;
|
||||
GetPeer()->GetLayoutInset( left, top, right, bottom );
|
||||
border -= left;
|
||||
}
|
||||
|
||||
|
||||
return border;
|
||||
}
|
||||
|
||||
@ -2318,14 +2318,14 @@ long wxWindowMac::MacGetRightBorderSize() const
|
||||
{
|
||||
// the wx borders are all symmetric in mac themes
|
||||
long border = MacGetWXBorderSize() ;
|
||||
|
||||
|
||||
if ( GetPeer() )
|
||||
{
|
||||
int left, top, right, bottom;
|
||||
GetPeer()->GetLayoutInset( left, top, right, bottom );
|
||||
border -= right;
|
||||
}
|
||||
|
||||
|
||||
return border;
|
||||
}
|
||||
|
||||
@ -2333,14 +2333,14 @@ long wxWindowMac::MacGetTopBorderSize() const
|
||||
{
|
||||
// the wx borders are all symmetric in mac themes
|
||||
long border = MacGetWXBorderSize() ;
|
||||
|
||||
|
||||
if ( GetPeer() )
|
||||
{
|
||||
int left, top, right, bottom;
|
||||
GetPeer()->GetLayoutInset( left, top, right, bottom );
|
||||
border -= top;
|
||||
}
|
||||
|
||||
|
||||
return border;
|
||||
}
|
||||
|
||||
@ -2348,14 +2348,14 @@ long wxWindowMac::MacGetBottomBorderSize() const
|
||||
{
|
||||
// the wx borders are all symmetric in mac themes
|
||||
long border = MacGetWXBorderSize() ;
|
||||
|
||||
|
||||
if ( GetPeer() )
|
||||
{
|
||||
int left, top, right, bottom;
|
||||
GetPeer()->GetLayoutInset( left, top, right, bottom );
|
||||
border -= bottom;
|
||||
}
|
||||
|
||||
|
||||
return border;
|
||||
}
|
||||
|
||||
@ -2530,18 +2530,18 @@ wxHotKeyHandler(EventHandlerCallRef WXUNUSED(nextHandler),
|
||||
GetEventParameter( event, kEventParamKeyMacCharCodes, typeChar, NULL, 1, NULL, &charCode );
|
||||
GetEventParameter( event, kEventParamKeyCode, typeUInt32, NULL, sizeof(UInt32), NULL, &keyCode );
|
||||
GetEventParameter( event, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(UInt32), NULL, &modifiers );
|
||||
|
||||
|
||||
UInt32 keymessage = (keyCode << 8) + charCode;
|
||||
|
||||
|
||||
wxKeyEvent wxevent(wxEVT_HOTKEY);
|
||||
wxevent.SetId(hotKeyId.id);
|
||||
wxTheApp->MacCreateKeyEvent( wxevent, s_hotkeys[i].window , keymessage ,
|
||||
modifiers , when , 0 ) ;
|
||||
|
||||
|
||||
s_hotkeys[i].window->HandleWindowEvent(wxevent);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return noErr;
|
||||
}
|
||||
|
||||
@ -2552,11 +2552,11 @@ bool wxWindowMac::RegisterHotKey(int hotkeyId, int modifiers, int keycode)
|
||||
if ( s_hotkeys[i].keyId == hotkeyId )
|
||||
{
|
||||
wxLogLastError(wxT("hotkeyId already registered"));
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static bool installed = false;
|
||||
if ( !installed )
|
||||
{
|
||||
@ -2567,7 +2567,7 @@ bool wxWindowMac::RegisterHotKey(int hotkeyId, int modifiers, int keycode)
|
||||
InstallApplicationEventHandler(&wxHotKeyHandler, 1, &eventType, NULL, NULL);
|
||||
installed = true;
|
||||
}
|
||||
|
||||
|
||||
UInt32 mac_modifiers=0;
|
||||
if ( modifiers & wxMOD_ALT )
|
||||
mac_modifiers |= optionKey;
|
||||
@ -2577,18 +2577,18 @@ bool wxWindowMac::RegisterHotKey(int hotkeyId, int modifiers, int keycode)
|
||||
mac_modifiers |= controlKey;
|
||||
if ( modifiers & wxMOD_CONTROL )
|
||||
mac_modifiers |= cmdKey;
|
||||
|
||||
|
||||
EventHotKeyRef hotKeyRef;
|
||||
EventHotKeyID hotKeyIDmac;
|
||||
|
||||
|
||||
hotKeyIDmac.signature = 'WXMC';
|
||||
hotKeyIDmac.id = hotkeyId;
|
||||
|
||||
|
||||
if ( RegisterEventHotKey(wxCharCodeWXToOSX((wxKeyCode)keycode), mac_modifiers, hotKeyIDmac,
|
||||
GetApplicationEventTarget(), 0, &hotKeyRef) != noErr )
|
||||
{
|
||||
wxLogLastError(wxT("RegisterHotKey"));
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
else
|
||||
@ -2597,10 +2597,10 @@ bool wxWindowMac::RegisterHotKey(int hotkeyId, int modifiers, int keycode)
|
||||
v.ref = hotKeyRef;
|
||||
v.keyId = hotkeyId;
|
||||
v.window = this;
|
||||
|
||||
|
||||
s_hotkeys.push_back(v);
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -2615,14 +2615,14 @@ bool wxWindowMac::UnregisterHotKey(int hotkeyId)
|
||||
if ( UnregisterEventHotKey(ref) != noErr )
|
||||
{
|
||||
wxLogLastError(wxT("UnregisterHotKey"));
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
else
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -2631,7 +2631,7 @@ bool wxWindowMac::UnregisterHotKey(int hotkeyId)
|
||||
bool wxWindowMac::OSXHandleKeyEvent( wxKeyEvent& event )
|
||||
{
|
||||
bool handled = false;
|
||||
|
||||
|
||||
// moved the ordinary key event sending AFTER the accel evaluation
|
||||
|
||||
#if wxUSE_ACCEL
|
||||
@ -2665,7 +2665,7 @@ bool wxWindowMac::OSXHandleKeyEvent( wxKeyEvent& event )
|
||||
}
|
||||
}
|
||||
#endif // wxUSE_ACCEL
|
||||
|
||||
|
||||
if ( !handled )
|
||||
{
|
||||
handled = HandleWindowEvent( event ) ;
|
||||
@ -2738,9 +2738,9 @@ void wxWidgetImpl::RemoveAssociations(wxWidgetImpl* impl)
|
||||
|
||||
void wxWidgetImpl::RemoveAssociation(WXWidget control)
|
||||
{
|
||||
wxCHECK_RET( control != NULL, wxT("attempt to remove a NULL WXWidget from control map") );
|
||||
wxCHECK_RET( control != NULL, wxT("attempt to remove a NULL WXWidget from control map") );
|
||||
|
||||
wxWinMacControlList.erase(control);
|
||||
wxWinMacControlList.erase(control);
|
||||
}
|
||||
|
||||
wxIMPLEMENT_ABSTRACT_CLASS(wxWidgetImpl, wxObject);
|
||||
|
@ -16,6 +16,10 @@
|
||||
|
||||
#if wxUSE_XRC && wxUSE_TOGGLEBTN
|
||||
|
||||
# if !defined(__WXUNIVERSAL__) && !defined(__WXMOTIF__) && !(defined(__WXGTK__) && !defined(__WXGTK20__))
|
||||
# define wxHAVE_BITMAPS_IN_BUTTON 1
|
||||
# endif
|
||||
|
||||
#include "wx/xrc/xh_tglbtn.h"
|
||||
#include "wx/tglbtn.h"
|
||||
#include "wx/button.h" // solely for wxBU_EXACTFIT
|
||||
@ -35,7 +39,7 @@ wxObject *wxToggleButtonXmlHandler::DoCreateResource()
|
||||
|
||||
wxObject *control = m_instance;
|
||||
|
||||
#if !defined(__WXUNIVERSAL__) && !defined(__WXMOTIF__) && !(defined(__WXGTK__) && !defined(__WXGTK20__))
|
||||
#ifdef wxHAVE_BITMAPS_IN_BUTTON
|
||||
|
||||
if (m_class == wxT("wxBitmapToggleButton"))
|
||||
{
|
||||
@ -78,16 +82,18 @@ void wxToggleButtonXmlHandler::DoCreateToggleButton(wxObject *control)
|
||||
wxDefaultValidator,
|
||||
GetName());
|
||||
|
||||
#ifdef wxHAVE_BITMAPS_IN_BUTTON
|
||||
if ( GetParamNode("bitmap") )
|
||||
{
|
||||
button->SetBitmap(GetBitmap("bitmap", wxART_BUTTON),
|
||||
GetDirection("bitmapposition"));
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
button->SetValue(GetBool( wxT("checked")));
|
||||
}
|
||||
|
||||
#if !defined(__WXUNIVERSAL__) && !defined(__WXMOTIF__) && !(defined(__WXGTK__) && !defined(__WXGTK20__))
|
||||
#ifdef wxHAVE_BITMAPS_IN_BUTTON
|
||||
void wxToggleButtonXmlHandler::DoCreateBitmapToggleButton(wxObject *control)
|
||||
{
|
||||
wxBitmapToggleButton *button = wxDynamicCast(control, wxBitmapToggleButton);
|
||||
|
Loading…
Reference in New Issue
Block a user