X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c7a49742ec6b4effe012dc7204db307e1267bf6a..14722c43c30918cd8fbba956b50ac3426d2fe339:/src/gtk/textctrl.cpp diff --git a/src/gtk/textctrl.cpp b/src/gtk/textctrl.cpp index 8a39558799..15c7981c77 100644 --- a/src/gtk/textctrl.cpp +++ b/src/gtk/textctrl.cpp @@ -30,7 +30,9 @@ #include #include +#include #include "wx/gtk/private.h" +#include "wx/gtk/private/gtk2-compat.h" // ---------------------------------------------------------------------------- // helpers @@ -167,25 +169,29 @@ static void wxGtkTextApplyTagsFromAttr(GtkWidget *text, GtkJustification align; switch (attr.GetAlignment()) { - default: - align = GTK_JUSTIFY_LEFT; - break; case wxTEXT_ALIGNMENT_RIGHT: align = GTK_JUSTIFY_RIGHT; break; case wxTEXT_ALIGNMENT_CENTER: align = GTK_JUSTIFY_CENTER; break; + case wxTEXT_ALIGNMENT_JUSTIFIED: +#ifdef __WXGTK3__ + align = GTK_JUSTIFY_FILL; + break; +#elif GTK_CHECK_VERSION(2,11,0) // gtk+ doesn't support justify before gtk+-2.11.0 with pango-1.17 being available // (but if new enough pango isn't available it's a mere gtk warning) -#if GTK_CHECK_VERSION(2,11,0) - case wxTEXT_ALIGNMENT_JUSTIFIED: if (!gtk_check_version(2,11,0)) + { align = GTK_JUSTIFY_FILL; - else - align = GTK_JUSTIFY_LEFT; - break; + break; + } + // fallthrough #endif + default: + align = GTK_JUSTIFY_LEFT; + break; } g_snprintf(buf, sizeof(buf), "WXALIGNMENT %d", align); @@ -403,7 +409,7 @@ au_check_word( GtkTextIter *s, GtkTextIter *e ) for( n = 0; n < WXSIZEOF(URIPrefixes); ++n ) { prefix_len = strlen(URIPrefixes[n]); - if((len > prefix_len) && !strncasecmp(text, URIPrefixes[n], prefix_len)) + if((len > prefix_len) && !wxStrnicmp(text, URIPrefixes[n], prefix_len)) break; } @@ -549,48 +555,6 @@ gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win ) } } -//----------------------------------------------------------------------------- -// clipboard events: "copy-clipboard", "cut-clipboard", "paste-clipboard" -//----------------------------------------------------------------------------- - -// common part of the event handlers below -static void -handle_text_clipboard_callback( GtkWidget *widget, wxTextCtrl *win, - wxEventType eventType, const gchar * signal_name) -{ - wxClipboardTextEvent event( eventType, win->GetId() ); - event.SetEventObject( win ); - if ( win->HandleWindowEvent( event ) ) - { - // don't let the default processing to take place if we did something - // ourselves in the event handler - g_signal_stop_emission_by_name (widget, signal_name); - } -} - -extern "C" { -static void -gtk_copy_clipboard_callback( GtkWidget *widget, wxTextCtrl *win ) -{ - handle_text_clipboard_callback( - widget, win, wxEVT_COMMAND_TEXT_COPY, "copy-clipboard" ); -} - -static void -gtk_cut_clipboard_callback( GtkWidget *widget, wxTextCtrl *win ) -{ - handle_text_clipboard_callback( - widget, win, wxEVT_COMMAND_TEXT_CUT, "cut-clipboard" ); -} - -static void -gtk_paste_clipboard_callback( GtkWidget *widget, wxTextCtrl *win ) -{ - handle_text_clipboard_callback( - widget, win, wxEVT_COMMAND_TEXT_PASTE, "paste-clipboard" ); -} -} - //----------------------------------------------------------------------------- // "mark_set" //----------------------------------------------------------------------------- @@ -787,7 +751,7 @@ bool wxTextCtrl::Create( wxWindow *parent, GtkTextIter start, end; // We create our wxUrl tag here for slight efficiency gain - we - // don't have to check for the tag existance in callbacks, + // don't have to check for the tag existence in callbacks, // hereby it's guaranteed to exist. gtk_text_buffer_create_tag(m_buffer, "wxUrl", "foreground", "blue", @@ -823,12 +787,7 @@ bool wxTextCtrl::Create( wxWindow *parent, } - g_signal_connect (m_text, "copy-clipboard", - G_CALLBACK (gtk_copy_clipboard_callback), this); - g_signal_connect (m_text, "cut-clipboard", - G_CALLBACK (gtk_cut_clipboard_callback), this); - g_signal_connect (m_text, "paste-clipboard", - G_CALLBACK (gtk_paste_clipboard_callback), this); + GTKConnectClipboardSignals(m_text); m_cursor = wxCursor( wxCURSOR_IBEAM ); @@ -1599,7 +1558,7 @@ bool wxTextCtrl::IsEditable() const if ( IsMultiLine() ) { - return gtk_text_view_get_editable(GTK_TEXT_VIEW(m_text)); + return gtk_text_view_get_editable(GTK_TEXT_VIEW(m_text)) != 0; } else { @@ -1645,7 +1604,12 @@ GdkWindow *wxTextCtrl::GTKGetWindow(wxArrayGdkWindows& WXUNUSED(windows)) const } else { +#ifdef __WXGTK3__ + // no access to internal GdkWindows + return NULL; +#else return gtk_entry_get_text_window(GTK_ENTRY(m_text)); +#endif } } @@ -1792,7 +1756,7 @@ bool wxTextCtrl::GetStyle(long position, wxTextAttr& style) void wxTextCtrl::DoApplyWidgetStyle(GtkRcStyle *style) { - gtk_widget_modify_style(m_text, style); + GTKApplyStyle(m_text, style); } void wxTextCtrl::OnCut(wxCommandEvent& WXUNUSED(event)) @@ -1953,7 +1917,7 @@ void wxTextCtrl::OnUrlMouseEvent(wxMouseEvent& event) gtk_text_iter_forward_to_tag_toggle(&end, tag); // Native context menu is probably not desired on an URL. - // Consider making this dependant on ProcessEvent(wxTextUrlEvent) return value + // Consider making this dependent on ProcessEvent(wxTextUrlEvent) return value if(event.GetEventType() == wxEVT_RIGHT_DOWN) event.Skip(false);