Merge branch 'WX_3_0_BRANCH' into wxPy-3.0-branch
This commit is contained in:
@@ -613,11 +613,13 @@ All (GUI):
|
|||||||
- Accept wxALIGN_CENTRE_HORIZONTAL in wxStaticText XRC handler (David Hart).
|
- Accept wxALIGN_CENTRE_HORIZONTAL in wxStaticText XRC handler (David Hart).
|
||||||
- Fix appearance after updating a wxGrid with hidden rows/columns (iwbnwif).
|
- Fix appearance after updating a wxGrid with hidden rows/columns (iwbnwif).
|
||||||
- Make wxAuiNotebookXmlHandler actually work.
|
- Make wxAuiNotebookXmlHandler actually work.
|
||||||
|
- Fix key handling in wxStyledTextCtrl in non-Unicode build (David Costanzo).
|
||||||
|
|
||||||
wxGTK:
|
wxGTK:
|
||||||
|
|
||||||
- Fix infinite sizing loop with GTK3 when using wxScrolled with a non-default
|
- Fix infinite sizing loop with GTK3 when using wxScrolled with a non-default
|
||||||
target window.
|
target window.
|
||||||
|
- Fix wxBitmap ctor from XBM for non-square bitmaps.
|
||||||
- Fix crashes in wxGTK3 when running with non-X11 backend (Marco Trevisan).
|
- Fix crashes in wxGTK3 when running with non-X11 backend (Marco Trevisan).
|
||||||
- Fix coordinates of wxSetCursorEvent propagated to parent windows.
|
- Fix coordinates of wxSetCursorEvent propagated to parent windows.
|
||||||
- Fix GTK+ warnings when refreshing wxListCtrl items (Scott Talbert).
|
- Fix GTK+ warnings when refreshing wxListCtrl items (Scott Talbert).
|
||||||
@@ -627,6 +629,7 @@ wxGTK:
|
|||||||
wxMSW:
|
wxMSW:
|
||||||
|
|
||||||
- Fix compilation with g++ 4.9 in non-C++11 mode.
|
- Fix compilation with g++ 4.9 in non-C++11 mode.
|
||||||
|
- Fix rendering of owner drawn multi-column menus (Pete Bannister).
|
||||||
- Fix regression in accessibility support (Leland Lucius).
|
- Fix regression in accessibility support (Leland Lucius).
|
||||||
- Fix regression in wxDC drawing with bottom-to-top y axis (Artur Wieczorek).
|
- Fix regression in wxDC drawing with bottom-to-top y axis (Artur Wieczorek).
|
||||||
- Fix compilation with C++Builder XE compiler (Nichka).
|
- Fix compilation with C++Builder XE compiler (Nichka).
|
||||||
|
@@ -227,6 +227,9 @@ public:
|
|||||||
// init with the parameters of the given font
|
// init with the parameters of the given font
|
||||||
void InitFromFont(const wxFont& font)
|
void InitFromFont(const wxFont& font)
|
||||||
{
|
{
|
||||||
|
#if wxUSE_PANGO
|
||||||
|
Init(*font.GetNativeFontInfo());
|
||||||
|
#else
|
||||||
// translate all font parameters
|
// translate all font parameters
|
||||||
SetStyle((wxFontStyle)font.GetStyle());
|
SetStyle((wxFontStyle)font.GetStyle());
|
||||||
SetWeight((wxFontWeight)font.GetWeight());
|
SetWeight((wxFontWeight)font.GetWeight());
|
||||||
@@ -252,6 +255,7 @@ public:
|
|||||||
// deal with encoding now (it may override the font family and facename
|
// deal with encoding now (it may override the font family and facename
|
||||||
// so do it after setting them)
|
// so do it after setting them)
|
||||||
SetEncoding(font.GetEncoding());
|
SetEncoding(font.GetEncoding());
|
||||||
|
#endif // !wxUSE_PANGO
|
||||||
}
|
}
|
||||||
|
|
||||||
// accessors and modifiers for the font elements
|
// accessors and modifiers for the font elements
|
||||||
|
@@ -200,6 +200,9 @@ protected:
|
|||||||
|
|
||||||
@see wxSimpleHtmlListBox::Create
|
@see wxSimpleHtmlListBox::Create
|
||||||
*/
|
*/
|
||||||
|
#define wxHLB_DEFAULT_STYLE wxBORDER_SUNKEN
|
||||||
|
#define wxHLB_MULTIPLE wxLB_MULTIPLE
|
||||||
|
|
||||||
class wxSimpleHtmlListBox : public wxHtmlListBox,
|
class wxSimpleHtmlListBox : public wxHtmlListBox,
|
||||||
public wxItemContainer
|
public wxItemContainer
|
||||||
{
|
{
|
||||||
|
@@ -372,6 +372,9 @@ wxString wxGetDisplayName();
|
|||||||
Even though there are virtual key codes defined for mouse buttons, they
|
Even though there are virtual key codes defined for mouse buttons, they
|
||||||
cannot be used with this function currently.
|
cannot be used with this function currently.
|
||||||
|
|
||||||
|
In wxGTK, this function can be only used with modifier keys (@c WXK_ALT, @c
|
||||||
|
WXK_CONTROL and @c WXK_SHIFT) when not using X11 backend currently.
|
||||||
|
|
||||||
@header{wx/utils.h}
|
@header{wx/utils.h}
|
||||||
*/
|
*/
|
||||||
bool wxGetKeyState(wxKeyCode key);
|
bool wxGetKeyState(wxKeyCode key);
|
||||||
|
@@ -571,7 +571,7 @@ void wxFileConfig::Parse(const wxTextBuffer& buffer, bool bLocal)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ( *pEnd != wxT(']') ) {
|
if ( *pEnd != wxT(']') ) {
|
||||||
wxLogError(_("file '%s': unexpected character %c at line %d."),
|
wxLogError(_("file '%s': unexpected character %c at line %zu."),
|
||||||
buffer.GetName(), *pEnd, n + 1);
|
buffer.GetName(), *pEnd, n + 1);
|
||||||
continue; // skip this line
|
continue; // skip this line
|
||||||
}
|
}
|
||||||
@@ -607,7 +607,7 @@ void wxFileConfig::Parse(const wxTextBuffer& buffer, bool bLocal)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
wxLogWarning(_("file '%s', line %d: '%s' ignored after group header."),
|
wxLogWarning(_("file '%s', line %zu: '%s' ignored after group header."),
|
||||||
buffer.GetName(), n + 1, pEnd);
|
buffer.GetName(), n + 1, pEnd);
|
||||||
bCont = false;
|
bCont = false;
|
||||||
}
|
}
|
||||||
@@ -636,7 +636,7 @@ void wxFileConfig::Parse(const wxTextBuffer& buffer, bool bLocal)
|
|||||||
pEnd++;
|
pEnd++;
|
||||||
|
|
||||||
if ( *pEnd++ != wxT('=') ) {
|
if ( *pEnd++ != wxT('=') ) {
|
||||||
wxLogError(_("file '%s', line %d: '=' expected."),
|
wxLogError(_("file '%s', line %zu: '=' expected."),
|
||||||
buffer.GetName(), n + 1);
|
buffer.GetName(), n + 1);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -649,7 +649,7 @@ void wxFileConfig::Parse(const wxTextBuffer& buffer, bool bLocal)
|
|||||||
else {
|
else {
|
||||||
if ( bLocal && pEntry->IsImmutable() ) {
|
if ( bLocal && pEntry->IsImmutable() ) {
|
||||||
// immutable keys can't be changed by user
|
// immutable keys can't be changed by user
|
||||||
wxLogWarning(_("file '%s', line %d: value for immutable key '%s' ignored."),
|
wxLogWarning(_("file '%s', line %zu: value for immutable key '%s' ignored."),
|
||||||
buffer.GetName(), n + 1, strKey.c_str());
|
buffer.GetName(), n + 1, strKey.c_str());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -659,8 +659,8 @@ void wxFileConfig::Parse(const wxTextBuffer& buffer, bool bLocal)
|
|||||||
// (c) key from global file now found in local one
|
// (c) key from global file now found in local one
|
||||||
// which is exactly what we want.
|
// which is exactly what we want.
|
||||||
else if ( !bLocal || pEntry->IsLocal() ) {
|
else if ( !bLocal || pEntry->IsLocal() ) {
|
||||||
wxLogWarning(_("file '%s', line %d: key '%s' was first found at line %d."),
|
wxLogWarning(_("file '%s', line %zu: key '%s' was first found at line %d."),
|
||||||
buffer.GetName(), (int)n + 1, strKey.c_str(), pEntry->Line());
|
buffer.GetName(), n + 1, strKey.c_str(), pEntry->Line());
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1092,7 +1092,11 @@ wxCopyFile (const wxString& file1, const wxString& file2, bool overwrite)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxDoCopyFile(fileIn, fbuf, file2, overwrite);
|
if ( !wxDoCopyFile(fileIn, fbuf, file2, overwrite) )
|
||||||
|
{
|
||||||
|
wxLogError(_("Error copying the file '%s' to '%s'."), file1, file2);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(__WXMAC__) || defined(__WXCOCOA__)
|
#if defined(__WXMAC__) || defined(__WXCOCOA__)
|
||||||
// copy the resource fork of the file too if it's present
|
// copy the resource fork of the file too if it's present
|
||||||
|
@@ -124,7 +124,8 @@ bool wxFontEnumerator::EnumerateEncodingsUTF8(const wxString& facename)
|
|||||||
|
|
||||||
for ( size_t n = 0; n < count; n++ )
|
for ( size_t n = 0; n < count; n++ )
|
||||||
{
|
{
|
||||||
OnFontEncoding(facenames[n], utf8);
|
if ( !OnFontEncoding(facenames[n], utf8) )
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@@ -428,17 +428,18 @@ wxBitmap::wxBitmap(const char bits[], int width, int height, int depth)
|
|||||||
const char* src = bits;
|
const char* src = bits;
|
||||||
guchar* dst = gdk_pixbuf_get_pixels(pixbuf);
|
guchar* dst = gdk_pixbuf_get_pixels(pixbuf);
|
||||||
const int stride_src = (width + 7) / 8;
|
const int stride_src = (width + 7) / 8;
|
||||||
const int rowinc_dst = gdk_pixbuf_get_rowstride(pixbuf) - 3 * width;
|
const int stride_dst = gdk_pixbuf_get_rowstride(pixbuf);
|
||||||
for (int j = 0; j < width; j++, src += stride_src, dst += rowinc_dst)
|
for (int j = 0; j < height; j++, src += stride_src, dst += stride_dst)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < height; i++)
|
guchar* d = dst;
|
||||||
|
for (int i = 0; i < width; i++)
|
||||||
{
|
{
|
||||||
guchar c = 0xff;
|
guchar c = 0xff;
|
||||||
if (src[i >> 3] & (1 << (i & 7)))
|
if (src[i >> 3] & (1 << (i & 7)))
|
||||||
c = 0;
|
c = 0;
|
||||||
*dst++ = c;
|
*d++ = c;
|
||||||
*dst++ = c;
|
*d++ = c;
|
||||||
*dst++ = c;
|
*d++ = c;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
@@ -250,6 +250,7 @@ wxControl::GetDefaultAttributesFromGTKWidget(GtkWidget* widget,
|
|||||||
stateFlag = GTK_STATE_FLAG_ACTIVE;
|
stateFlag = GTK_STATE_FLAG_ACTIVE;
|
||||||
}
|
}
|
||||||
GtkStyleContext* sc = gtk_widget_get_style_context(widget);
|
GtkStyleContext* sc = gtk_widget_get_style_context(widget);
|
||||||
|
gtk_style_context_save(sc);
|
||||||
GdkRGBA c;
|
GdkRGBA c;
|
||||||
gtk_style_context_set_state(sc, stateFlag);
|
gtk_style_context_set_state(sc, stateFlag);
|
||||||
gtk_style_context_get_color(sc, stateFlag, &c);
|
gtk_style_context_get_color(sc, stateFlag, &c);
|
||||||
@@ -260,6 +261,7 @@ wxControl::GetDefaultAttributesFromGTKWidget(GtkWidget* widget,
|
|||||||
gtk_style_context_get(
|
gtk_style_context_get(
|
||||||
sc, stateFlag, GTK_STYLE_PROPERTY_FONT, &info.description, NULL);
|
sc, stateFlag, GTK_STYLE_PROPERTY_FONT, &info.description, NULL);
|
||||||
attr.font = wxFont(info);
|
attr.font = wxFont(info);
|
||||||
|
gtk_style_context_restore(sc);
|
||||||
#else
|
#else
|
||||||
GtkStyle* style;
|
GtkStyle* style;
|
||||||
|
|
||||||
|
@@ -280,8 +280,6 @@ void wxFrame::DetachMenuBar()
|
|||||||
#if wxUSE_LIBHILDON || wxUSE_LIBHILDON2
|
#if wxUSE_LIBHILDON || wxUSE_LIBHILDON2
|
||||||
hildon_window_set_menu(HILDON_WINDOW(m_widget), NULL);
|
hildon_window_set_menu(HILDON_WINDOW(m_widget), NULL);
|
||||||
#else // !wxUSE_LIBHILDON && !wxUSE_LIBHILDON2
|
#else // !wxUSE_LIBHILDON && !wxUSE_LIBHILDON2
|
||||||
g_object_ref( m_frameMenuBar->m_widget );
|
|
||||||
|
|
||||||
gtk_container_remove( GTK_CONTAINER(m_mainWidget), m_frameMenuBar->m_widget );
|
gtk_container_remove( GTK_CONTAINER(m_mainWidget), m_frameMenuBar->m_widget );
|
||||||
#endif // wxUSE_LIBHILDON || wxUSE_LIBHILDON2 /!wxUSE_LIBHILDON && !wxUSE_LIBHILDON2
|
#endif // wxUSE_LIBHILDON || wxUSE_LIBHILDON2 /!wxUSE_LIBHILDON && !wxUSE_LIBHILDON2
|
||||||
}
|
}
|
||||||
|
@@ -38,20 +38,6 @@
|
|||||||
#include <X11/Xatom.h> // XA_CARDINAL
|
#include <X11/Xatom.h> // XA_CARDINAL
|
||||||
#include "wx/unix/utilsx11.h"
|
#include "wx/unix/utilsx11.h"
|
||||||
#endif
|
#endif
|
||||||
#ifdef GDK_WINDOWING_WAYLAND
|
|
||||||
#include <gdk/gdkwayland.h>
|
|
||||||
#define HAS_CLIENT_DECOR
|
|
||||||
#endif
|
|
||||||
#ifdef GDK_WINDOWING_MIR
|
|
||||||
extern "C" {
|
|
||||||
#include <gdk/gdkmir.h>
|
|
||||||
}
|
|
||||||
#define HAS_CLIENT_DECOR
|
|
||||||
#endif
|
|
||||||
#ifdef GDK_WINDOWING_BROADWAY
|
|
||||||
#include <gdk/gdkbroadway.h>
|
|
||||||
#define HAS_CLIENT_DECOR
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "wx/gtk/private.h"
|
#include "wx/gtk/private.h"
|
||||||
#include "wx/gtk/private/gtk2-compat.h"
|
#include "wx/gtk/private/gtk2-compat.h"
|
||||||
@@ -93,25 +79,29 @@ static enum {
|
|||||||
static bool gs_decorCacheValid;
|
static bool gs_decorCacheValid;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAS_CLIENT_DECOR
|
#ifdef __WXGTK3__
|
||||||
static bool HasClientDecor(GtkWidget* widget)
|
static bool HasClientDecor(GtkWidget* widget)
|
||||||
{
|
{
|
||||||
GdkDisplay* display = gtk_widget_get_display(widget);
|
static bool has;
|
||||||
#ifdef GDK_WINDOWING_WAYLAND
|
static bool once;
|
||||||
if (GDK_IS_WAYLAND_DISPLAY(display))
|
if (!once)
|
||||||
return true;
|
{
|
||||||
#endif
|
once = true;
|
||||||
#ifdef GDK_WINDOWING_MIR
|
GdkDisplay* display = gtk_widget_get_display(widget);
|
||||||
if (GDK_IS_MIR_DISPLAY(display))
|
const char* name = g_type_name(G_TYPE_FROM_INSTANCE(display));
|
||||||
return true;
|
has =
|
||||||
#endif
|
strcmp(name, "GdkWaylandDisplay") == 0 ||
|
||||||
#ifdef GDK_WINDOWING_BROADWAY
|
strcmp(name, "GdkMirDisplay") == 0 ||
|
||||||
if (GDK_IS_BROADWAY_DISPLAY(display))
|
strcmp(name, "GdkBroadwayDisplay") == 0;
|
||||||
return true;
|
}
|
||||||
#endif
|
return has;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static inline bool HasClientDecor(GtkWidget*)
|
||||||
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#endif // HAS_CLIENT_DECOR
|
#endif
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// RequestUserAttention related functions
|
// RequestUserAttention related functions
|
||||||
@@ -266,7 +256,6 @@ size_allocate(GtkWidget*, GtkAllocation* alloc, wxTopLevelWindowGTK* win)
|
|||||||
GtkAllocation a;
|
GtkAllocation a;
|
||||||
gtk_widget_get_allocation(win->m_widget, &a);
|
gtk_widget_get_allocation(win->m_widget, &a);
|
||||||
wxSize size(a.width, a.height);
|
wxSize size(a.width, a.height);
|
||||||
#ifdef HAS_CLIENT_DECOR
|
|
||||||
if (HasClientDecor(win->m_widget))
|
if (HasClientDecor(win->m_widget))
|
||||||
{
|
{
|
||||||
GtkAllocation a2;
|
GtkAllocation a2;
|
||||||
@@ -279,7 +268,6 @@ size_allocate(GtkWidget*, GtkAllocation* alloc, wxTopLevelWindowGTK* win)
|
|||||||
win->GTKUpdateDecorSize(decorSize);
|
win->GTKUpdateDecorSize(decorSize);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
size.x += win->m_decorSize.left + win->m_decorSize.right;
|
size.x += win->m_decorSize.left + win->m_decorSize.right;
|
||||||
size.y += win->m_decorSize.top + win->m_decorSize.bottom;
|
size.y += win->m_decorSize.top + win->m_decorSize.bottom;
|
||||||
@@ -760,9 +748,9 @@ bool wxTopLevelWindowGTK::Create( wxWindow *parent,
|
|||||||
|
|
||||||
if ( style & wxCAPTION )
|
if ( style & wxCAPTION )
|
||||||
m_gdkDecor |= GDK_DECOR_TITLE;
|
m_gdkDecor |= GDK_DECOR_TITLE;
|
||||||
#if defined(GDK_WINDOWING_WAYLAND) && GTK_CHECK_VERSION(3,10,0)
|
#if GTK_CHECK_VERSION(3,10,0)
|
||||||
else if (
|
else if (
|
||||||
GDK_IS_WAYLAND_DISPLAY(gtk_widget_get_display(m_widget)) &&
|
strcmp("GdkWaylandDisplay", g_type_name(G_TYPE_FROM_INSTANCE(gtk_widget_get_display(m_widget)))) == 0 &&
|
||||||
gtk_check_version(3,10,0) == NULL)
|
gtk_check_version(3,10,0) == NULL)
|
||||||
{
|
{
|
||||||
gtk_window_set_titlebar(GTK_WINDOW(m_widget), gtk_header_bar_new());
|
gtk_window_set_titlebar(GTK_WINDOW(m_widget), gtk_header_bar_new());
|
||||||
@@ -1109,9 +1097,7 @@ void wxTopLevelWindowGTK::DoMoveWindow(int WXUNUSED(x), int WXUNUSED(y), int WXU
|
|||||||
void wxTopLevelWindowGTK::GTKDoGetSize(int *width, int *height) const
|
void wxTopLevelWindowGTK::GTKDoGetSize(int *width, int *height) const
|
||||||
{
|
{
|
||||||
wxSize size(m_width, m_height);
|
wxSize size(m_width, m_height);
|
||||||
#ifdef HAS_CLIENT_DECOR
|
|
||||||
if (!HasClientDecor(m_widget))
|
if (!HasClientDecor(m_widget))
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
size.x -= m_decorSize.left + m_decorSize.right;
|
size.x -= m_decorSize.left + m_decorSize.right;
|
||||||
size.y -= m_decorSize.top + m_decorSize.bottom;
|
size.y -= m_decorSize.top + m_decorSize.bottom;
|
||||||
@@ -1280,14 +1266,12 @@ void wxTopLevelWindowGTK::DoSetSizeHints( int minW, int minH,
|
|||||||
hints.max_height = INT_MAX / 16;
|
hints.max_height = INT_MAX / 16;
|
||||||
int decorSize_x;
|
int decorSize_x;
|
||||||
int decorSize_y;
|
int decorSize_y;
|
||||||
#ifdef HAS_CLIENT_DECOR
|
|
||||||
if (HasClientDecor(m_widget))
|
if (HasClientDecor(m_widget))
|
||||||
{
|
{
|
||||||
decorSize_x = 0;
|
decorSize_x = 0;
|
||||||
decorSize_y = 0;
|
decorSize_y = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
decorSize_x = m_decorSize.left + m_decorSize.right;
|
decorSize_x = m_decorSize.left + m_decorSize.right;
|
||||||
decorSize_y = m_decorSize.top + m_decorSize.bottom;
|
decorSize_y = m_decorSize.top + m_decorSize.bottom;
|
||||||
@@ -1323,13 +1307,11 @@ void wxTopLevelWindowGTK::GTKUpdateDecorSize(const DecorSize& decorSize)
|
|||||||
if (!IsMaximized() && !IsFullScreen())
|
if (!IsMaximized() && !IsFullScreen())
|
||||||
GetCachedDecorSize() = decorSize;
|
GetCachedDecorSize() = decorSize;
|
||||||
|
|
||||||
#ifdef HAS_CLIENT_DECOR
|
|
||||||
if (HasClientDecor(m_widget))
|
if (HasClientDecor(m_widget))
|
||||||
{
|
{
|
||||||
m_decorSize = decorSize;
|
m_decorSize = decorSize;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
#ifdef GDK_WINDOWING_X11
|
#ifdef GDK_WINDOWING_X11
|
||||||
if (m_updateDecorSize && memcmp(&m_decorSize, &decorSize, sizeof(DecorSize)))
|
if (m_updateDecorSize && memcmp(&m_decorSize, &decorSize, sizeof(DecorSize)))
|
||||||
{
|
{
|
||||||
|
@@ -304,8 +304,10 @@ draw_border(GtkWidget* widget, GdkEventExpose* gdk_event, wxWindow* win)
|
|||||||
#ifdef __WXGTK3__
|
#ifdef __WXGTK3__
|
||||||
GtkStyleContext* sc = gtk_widget_get_style_context(win->m_wxwindow);
|
GtkStyleContext* sc = gtk_widget_get_style_context(win->m_wxwindow);
|
||||||
GdkRGBA c;
|
GdkRGBA c;
|
||||||
|
gtk_style_context_save(sc);
|
||||||
gtk_style_context_set_state(sc, GTK_STATE_FLAG_NORMAL);
|
gtk_style_context_set_state(sc, GTK_STATE_FLAG_NORMAL);
|
||||||
gtk_style_context_get_border_color(sc, GTK_STATE_FLAG_NORMAL, &c);
|
gtk_style_context_get_border_color(sc, GTK_STATE_FLAG_NORMAL, &c);
|
||||||
|
gtk_style_context_restore(sc);
|
||||||
gdk_cairo_set_source_rgba(cr, &c);
|
gdk_cairo_set_source_rgba(cr, &c);
|
||||||
cairo_set_line_width(cr, 1);
|
cairo_set_line_width(cr, 1);
|
||||||
cairo_rectangle(cr, x + 0.5, y + 0.5, w - 1, h - 1);
|
cairo_rectangle(cr, x + 0.5, y + 0.5, w - 1, h - 1);
|
||||||
@@ -4444,9 +4446,11 @@ void wxWindowGTK::GTKApplyStyle(GtkWidget* widget, GtkRcStyle* WXUNUSED_IN_GTK3(
|
|||||||
cairo_pattern_t* pattern = NULL;
|
cairo_pattern_t* pattern = NULL;
|
||||||
if (m_backgroundColour.IsOk())
|
if (m_backgroundColour.IsOk())
|
||||||
{
|
{
|
||||||
|
gtk_style_context_save(context);
|
||||||
gtk_style_context_set_state(context, GTK_STATE_FLAG_NORMAL);
|
gtk_style_context_set_state(context, GTK_STATE_FLAG_NORMAL);
|
||||||
gtk_style_context_get(context,
|
gtk_style_context_get(context,
|
||||||
GTK_STATE_FLAG_NORMAL, "background-image", &pattern, NULL);
|
GTK_STATE_FLAG_NORMAL, "background-image", &pattern, NULL);
|
||||||
|
gtk_style_context_restore(context);
|
||||||
}
|
}
|
||||||
if (pattern)
|
if (pattern)
|
||||||
{
|
{
|
||||||
|
@@ -873,7 +873,8 @@ bool wxMenuItem::OnDrawItem(wxDC& dc, const wxRect& rc,
|
|||||||
data->SeparatorMargin.ApplyTo(rcSeparator);
|
data->SeparatorMargin.ApplyTo(rcSeparator);
|
||||||
|
|
||||||
RECT rcGutter = rcSelection;
|
RECT rcGutter = rcSelection;
|
||||||
rcGutter.right = data->ItemMargin.cxLeftWidth
|
rcGutter.right = rcGutter.left
|
||||||
|
+ data->ItemMargin.cxLeftWidth
|
||||||
+ data->CheckBgMargin.cxLeftWidth
|
+ data->CheckBgMargin.cxLeftWidth
|
||||||
+ data->CheckMargin.cxLeftWidth
|
+ data->CheckMargin.cxLeftWidth
|
||||||
+ imgWidth
|
+ imgWidth
|
||||||
|
@@ -29,10 +29,6 @@
|
|||||||
|
|
||||||
#include "wx/osx/private.h"
|
#include "wx/osx/private.h"
|
||||||
|
|
||||||
#if wxOSX_USE_COCOA_OR_CARBON
|
|
||||||
#include <QuickTime/QuickTime.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// wxDataFormat
|
// wxDataFormat
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
@@ -35,10 +35,6 @@ IMPLEMENT_DYNAMIC_CLASS(wxMask, wxObject)
|
|||||||
#include "wx/osx/private.h"
|
#include "wx/osx/private.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __WXOSX_IPHONE__
|
|
||||||
#include <QuickTime/QuickTime.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
CGColorSpaceRef wxMacGetGenericRGBColorSpace();
|
CGColorSpaceRef wxMacGetGenericRGBColorSpace();
|
||||||
CGDataProviderRef wxMacCGDataProviderCreateWithMemoryBuffer( const wxMemoryBuffer& buf );
|
CGDataProviderRef wxMacCGDataProviderCreateWithMemoryBuffer( const wxMemoryBuffer& buf );
|
||||||
|
|
||||||
|
@@ -4749,7 +4749,7 @@ void wxStyledTextCtrl::OnChar(wxKeyEvent& evt) {
|
|||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
int key = evt.GetKeyCode();
|
int key = evt.GetKeyCode();
|
||||||
if (key <= WXK_START || key > WXK_COMMAND) {
|
if (key < WXK_START) {
|
||||||
m_swx->DoAddChar(key);
|
m_swx->DoAddChar(key);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@@ -887,7 +887,7 @@ void wxStyledTextCtrl::OnChar(wxKeyEvent& evt) {
|
|||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
int key = evt.GetKeyCode();
|
int key = evt.GetKeyCode();
|
||||||
if (key <= WXK_START || key > WXK_COMMAND) {
|
if (key < WXK_START) {
|
||||||
m_swx->DoAddChar(key);
|
m_swx->DoAddChar(key);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@@ -89,7 +89,10 @@ bool wxFontEnumerator::EnumerateFacenames(wxFontEncoding encoding,
|
|||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
const gchar *name = pango_font_family_get_name(families[i]);
|
const gchar *name = pango_font_family_get_name(families[i]);
|
||||||
OnFacename(wxString(name, wxConvUTF8));
|
if ( !OnFacename(wxString(name, wxConvUTF8)) )
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
g_free(families);
|
g_free(families);
|
||||||
|
@@ -561,7 +561,7 @@ void wxMimeTypesManagerImpl::Initialize(int mailcapStyles,
|
|||||||
}
|
}
|
||||||
|
|
||||||
wxArrayString dirs;
|
wxArrayString dirs;
|
||||||
wxStringTokenizer tokenizer(xdgDataDirs, ":");
|
wxStringTokenizer tokenizer(xdgDataDirs, ":", wxTOKEN_STRTOK);
|
||||||
while ( tokenizer.HasMoreTokens() )
|
while ( tokenizer.HasMoreTokens() )
|
||||||
{
|
{
|
||||||
wxString p = tokenizer.GetNextToken();
|
wxString p = tokenizer.GetNextToken();
|
||||||
|
@@ -809,7 +809,7 @@ WXKeySym wxCharCodeWXToX(int id)
|
|||||||
// check current state of a key
|
// check current state of a key
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
bool wxGetKeyState(wxKeyCode key)
|
static bool wxGetKeyStateX11(wxKeyCode key)
|
||||||
{
|
{
|
||||||
wxASSERT_MSG(key != WXK_LBUTTON && key != WXK_RBUTTON && key !=
|
wxASSERT_MSG(key != WXK_LBUTTON && key != WXK_RBUTTON && key !=
|
||||||
WXK_MBUTTON, wxT("can't use wxGetKeyState() for mouse buttons"));
|
WXK_MBUTTON, wxT("can't use wxGetKeyState() for mouse buttons"));
|
||||||
@@ -851,11 +851,69 @@ bool wxGetKeyState(wxKeyCode key)
|
|||||||
// with the least-significant bit in the byte representing key 8N.
|
// with the least-significant bit in the byte representing key 8N.
|
||||||
char key_vector[32];
|
char key_vector[32];
|
||||||
XQueryKeymap(pDisplay, key_vector);
|
XQueryKeymap(pDisplay, key_vector);
|
||||||
return key_vector[keyCode >> 3] & (1 << (keyCode & 7));
|
return (key_vector[keyCode >> 3] & (1 << (keyCode & 7))) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // !defined(__WXGTK__) || defined(GDK_WINDOWING_X11)
|
#endif // !defined(__WXGTK__) || defined(GDK_WINDOWING_X11)
|
||||||
|
|
||||||
|
// We need to use GDK functions when using wxGTK with a non-X11 backend, the
|
||||||
|
// X11 code above can't work in this case.
|
||||||
|
#ifdef __WXGTK__
|
||||||
|
|
||||||
|
// gdk_keymap_get_modifier_state() is only available since 3.4
|
||||||
|
#if GTK_CHECK_VERSION(3,4,0)
|
||||||
|
|
||||||
|
#define wxHAS_GETKEYSTATE_GTK
|
||||||
|
|
||||||
|
extern GtkWidget *wxGetRootWindow();
|
||||||
|
|
||||||
|
static bool wxGetKeyStateGTK(wxKeyCode key)
|
||||||
|
{
|
||||||
|
if (gtk_check_version(3,4,0) != NULL)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
GdkDisplay* display = gtk_widget_get_display(wxGetRootWindow());
|
||||||
|
GdkKeymap* keymap = gdk_keymap_get_for_display(display);
|
||||||
|
guint state = gdk_keymap_get_modifier_state(keymap);
|
||||||
|
guint mask = 0;
|
||||||
|
switch (key)
|
||||||
|
{
|
||||||
|
case WXK_ALT:
|
||||||
|
mask = GDK_MOD1_MASK;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WXK_CONTROL:
|
||||||
|
mask = GDK_CONTROL_MASK;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WXK_SHIFT:
|
||||||
|
mask = GDK_SHIFT_MASK;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
wxFAIL_MSG(wxS("Unsupported key, only modifiers can be used"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return (state & mask) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // GTK+ 3.4
|
||||||
|
#endif // __WXGTK__
|
||||||
|
|
||||||
|
bool wxGetKeyState(wxKeyCode key)
|
||||||
|
{
|
||||||
|
#ifdef wxHAS_GETKEYSTATE_GTK
|
||||||
|
GdkDisplay* display = gtk_widget_get_display(wxGetRootWindow());
|
||||||
|
const char* name = g_type_name(G_TYPE_FROM_INSTANCE(display));
|
||||||
|
if (strcmp(name, "GdkX11Display") != 0)
|
||||||
|
{
|
||||||
|
return wxGetKeyStateGTK(key);
|
||||||
|
}
|
||||||
|
#endif // GTK+ 3.4+
|
||||||
|
|
||||||
|
return wxGetKeyStateX11(key);
|
||||||
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// Launch document with default app
|
// Launch document with default app
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
@@ -35,6 +35,7 @@ wxAuiNotebookXmlHandler::wxAuiNotebookXmlHandler()
|
|||||||
XRC_ADD_STYLE(wxAUI_NB_CLOSE_BUTTON);
|
XRC_ADD_STYLE(wxAUI_NB_CLOSE_BUTTON);
|
||||||
XRC_ADD_STYLE(wxAUI_NB_CLOSE_ON_ACTIVE_TAB);
|
XRC_ADD_STYLE(wxAUI_NB_CLOSE_ON_ACTIVE_TAB);
|
||||||
XRC_ADD_STYLE(wxAUI_NB_CLOSE_ON_ALL_TABS);
|
XRC_ADD_STYLE(wxAUI_NB_CLOSE_ON_ALL_TABS);
|
||||||
|
XRC_ADD_STYLE(wxAUI_NB_MIDDLE_CLICK_CLOSE);
|
||||||
XRC_ADD_STYLE(wxAUI_NB_TOP);
|
XRC_ADD_STYLE(wxAUI_NB_TOP);
|
||||||
XRC_ADD_STYLE(wxAUI_NB_BOTTOM);
|
XRC_ADD_STYLE(wxAUI_NB_BOTTOM);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user