X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/44cc96a80c09c8572e1315be66d29f6d610cbf78..82c126e50158efee5a1f46e1200be380c5199f8d:/src/gtk/textctrl.cpp diff --git a/src/gtk/textctrl.cpp b/src/gtk/textctrl.cpp index e7a77241d1..ccdba0721e 100644 --- a/src/gtk/textctrl.cpp +++ b/src/gtk/textctrl.cpp @@ -38,8 +38,8 @@ extern "C" { static void wxGtkOnRemoveTag(GtkTextBuffer *buffer, GtkTextTag *tag, - GtkTextIter *start, - GtkTextIter *end, + GtkTextIter * WXUNUSED(start), + GtkTextIter * WXUNUSED(end), char *prefix) { gchar *name; @@ -198,14 +198,9 @@ static void wxGtkTextApplyTagsFromAttr(GtkWidget *text, wxGtkTextRemoveTagsWithPrefix(text_buffer, "WXINDENT", start, end); // Convert indent from 1/10th of a mm into pixels - float factor; -#if GTK_CHECK_VERSION(2,2,0) - if (!gtk_check_version(2,2,0)) - factor = (float)gdk_screen_get_width(gtk_widget_get_screen(text)) / + float factor = + (float)gdk_screen_get_width(gtk_widget_get_screen(text)) / gdk_screen_get_width_mm(gtk_widget_get_screen(text)) / 10; - else -#endif - factor = (float)gdk_screen_width() / gdk_screen_width_mm() / 10; const int indent = (int)(factor * attr.GetLeftIndent()); const int subIndent = (int)(factor * attr.GetLeftSubIndent()); @@ -260,14 +255,9 @@ static void wxGtkTextApplyTagsFromAttr(GtkWidget *text, if (!tag) { // Factor to convert from 1/10th of a mm into pixels - float factor; -#if GTK_CHECK_VERSION(2,2,0) - if (!gtk_check_version(2,2,0)) - factor = (float)gdk_screen_get_width(gtk_widget_get_screen(text)) / + float factor = + (float)gdk_screen_get_width(gtk_widget_get_screen(text)) / gdk_screen_get_width_mm(gtk_widget_get_screen(text)) / 10; - else -#endif - factor = (float)gdk_screen_width() / gdk_screen_width_mm() / 10; PangoTabArray* tabArray = pango_tab_array_new(tabs.GetCount(), TRUE); for (size_t i = 0; i < tabs.GetCount(); i++) @@ -305,9 +295,9 @@ extern "C" { static void au_apply_tag_callback(GtkTextBuffer *buffer, GtkTextTag *tag, - GtkTextIter *start, - GtkTextIter *end, - gpointer textctrl) + GtkTextIter * WXUNUSED(start), + GtkTextIter * WXUNUSED(end), + gpointer WXUNUSED(textctrl)) { if(tag == gtk_text_tag_table_lookup(gtk_text_buffer_get_tag_table(buffer), "wxUrl")) g_signal_stop_emission_by_name (buffer, "apply_tag"); @@ -320,7 +310,7 @@ au_apply_tag_callback(GtkTextBuffer *buffer, extern "C" { static gboolean -pred_whitespace (gunichar ch, gpointer user_data) +pred_whitespace(gunichar ch, gpointer WXUNUSED(user_data)) { return g_unichar_isspace(ch); } @@ -328,7 +318,7 @@ pred_whitespace (gunichar ch, gpointer user_data) extern "C" { static gboolean -pred_non_whitespace (gunichar ch, gpointer user_data) +pred_non_whitespace (gunichar ch, gpointer WXUNUSED(user_data)) { return !g_unichar_isspace(ch); } @@ -336,7 +326,7 @@ pred_non_whitespace (gunichar ch, gpointer user_data) extern "C" { static gboolean -pred_nonpunct (gunichar ch, gpointer user_data) +pred_nonpunct (gunichar ch, gpointer WXUNUSED(user_data)) { return !g_unichar_ispunct(ch); } @@ -344,7 +334,7 @@ pred_nonpunct (gunichar ch, gpointer user_data) extern "C" { static gboolean -pred_nonpunct_or_slash (gunichar ch, gpointer user_data) +pred_nonpunct_or_slash (gunichar ch, gpointer WXUNUSED(user_data)) { return !g_unichar_ispunct(ch) || ch == '/'; } @@ -453,7 +443,7 @@ au_check_range(GtkTextIter *s, extern "C" { static void -au_insert_text_callback(GtkTextBuffer *buffer, +au_insert_text_callback(GtkTextBuffer * WXUNUSED(buffer), GtkTextIter *end, gchar *text, gint len, @@ -485,7 +475,7 @@ au_insert_text_callback(GtkTextBuffer *buffer, extern "C" { static void -au_delete_range_callback(GtkTextBuffer *buffer, +au_delete_range_callback(GtkTextBuffer * WXUNUSED(buffer), GtkTextIter *start, GtkTextIter *end, wxTextCtrl *win) @@ -511,7 +501,7 @@ au_delete_range_callback(GtkTextBuffer *buffer, extern "C" { static void -gtk_text_changed_callback( GtkWidget *widget, wxTextCtrl *win ) +gtk_text_changed_callback( GtkWidget * WXUNUSED(widget), wxTextCtrl *win ) { if ( win->IgnoreTextUpdate() ) return; @@ -573,7 +563,9 @@ gtk_paste_clipboard_callback( GtkWidget *widget, wxTextCtrl *win ) extern "C" { static gboolean -gtk_text_exposed_callback( GtkWidget *widget, GdkEventExpose *event, wxTextCtrl *win ) +gtk_text_exposed_callback( GtkWidget * WXUNUSED(widget), + GdkEventExpose * WXUNUSED(event), + wxTextCtrl * WXUNUSED(win) ) { return TRUE; } @@ -745,6 +737,9 @@ bool wxTextCtrl::Create( wxWindow *parent, if (style & wxTE_READONLY) GTKSetEditable(); + if (style & wxTE_PROCESS_ENTER) + GTKSetActivatesDefault(); + // left justification (alignment) is the default anyhow if ( style & (wxTE_RIGHT | wxTE_CENTRE) ) GTKSetJustification(); @@ -822,9 +817,19 @@ void wxTextCtrl::GTKSetEditable() void wxTextCtrl::GTKSetVisibility() { - // VZ: shouldn't we assert if wxTE_PASSWORD is set for multiline control? - if ( IsSingleLine() ) - gtk_entry_set_visibility(GTK_ENTRY(m_text), !HasFlag(wxTE_PASSWORD)); + wxCHECK_RET( IsSingleLine(), + "wxTE_PASSWORD is for single line text controls only" ); + + gtk_entry_set_visibility(GTK_ENTRY(m_text), !HasFlag(wxTE_PASSWORD)); +} + +void wxTextCtrl::GTKSetActivatesDefault() +{ + wxCHECK_RET( IsSingleLine(), + "wxTE_PROCESS_ENTER is for single line text controls only" ); + + gtk_entry_set_activates_default(GTK_ENTRY(m_text), + !HasFlag(wxTE_PROCESS_ENTER)); } void wxTextCtrl::GTKSetWrapMode() @@ -842,17 +847,7 @@ void wxTextCtrl::GTKSetWrapMode() else if ( HasFlag( wxTE_WORDWRAP ) ) wrap = GTK_WRAP_WORD; else // HasFlag(wxTE_BESTWRAP) always true as wxTE_BESTWRAP == 0 - { - // GTK_WRAP_WORD_CHAR seems to be new in GTK+ 2.4 -#ifdef __WXGTK24__ - if ( !gtk_check_version(2,4,0) ) - { - wrap = GTK_WRAP_WORD_CHAR; - } - else -#endif // __WXGTK24__ - wrap = GTK_WRAP_WORD; - } + wrap = GTK_WRAP_WORD_CHAR; gtk_text_view_set_wrap_mode( GTK_TEXT_VIEW( m_text ), wrap ); } @@ -873,23 +868,16 @@ void wxTextCtrl::GTKSetJustification() } else // single line { -#ifdef __WXGTK24__ - // gtk_entry_set_alignment was introduced in gtk+-2.3.5 - if (!gtk_check_version(2,4,0)) - { - gfloat align; - if ( HasFlag(wxTE_RIGHT) ) - align = 1.0; - else if ( HasFlag(wxTE_CENTRE) ) - align = 0.5; - else // single line - align = 0.0; - - gtk_entry_set_alignment(GTK_ENTRY(m_text), align); - } -#endif // __WXGTK24__ - } + gfloat align; + if ( HasFlag(wxTE_RIGHT) ) + align = 1.0; + else if ( HasFlag(wxTE_CENTRE) ) + align = 0.5; + else // single line + align = 0.0; + gtk_entry_set_alignment(GTK_ENTRY(m_text), align); + } } void wxTextCtrl::SetWindowStyleFlag(long style) @@ -904,6 +892,9 @@ void wxTextCtrl::SetWindowStyleFlag(long style) if ( (style & wxTE_PASSWORD) != (styleOld & wxTE_PASSWORD) ) GTKSetVisibility(); + if ( (style & wxTE_PROCESS_ENTER) != (styleOld & wxTE_PROCESS_ENTER) ) + GTKSetActivatesDefault(); + static const long flagsWrap = wxTE_WORDWRAP | wxTE_CHARWRAP | wxTE_DONTWRAP; if ( (style & flagsWrap) != (styleOld & flagsWrap) ) GTKSetWrapMode(); @@ -1234,7 +1225,7 @@ bool wxTextCtrl::Enable( bool enable ) // wxGTK-specific: called recursively by Enable, // to give widgets an opportunity to correct their colours after they // have been changed by Enable -void wxTextCtrl::OnEnabled( bool enable ) +void wxTextCtrl::OnEnabled(bool WXUNUSED(enable)) { // If we have a custom background colour, we use this colour in both // disabled and enabled mode, or we end up with a different colour under the @@ -1535,29 +1526,6 @@ void wxTextCtrl::OnChar( wxKeyEvent &key_event ) if ( GetEventHandler()->ProcessEvent(event) ) return; } - - // FIXME: this is not the right place to do it, wxDialog::OnCharHook() - // probably is - if ( IsSingleLine() ) - { - // This will invoke the dialog default action, such - // as the clicking the default button. - - wxWindow *top_frame = m_parent; - while (top_frame->GetParent() && !(top_frame->IsTopLevel())) - top_frame = top_frame->GetParent(); - - if (top_frame && GTK_IS_WINDOW(top_frame->m_widget)) - { - GtkWindow *window = GTK_WINDOW(top_frame->m_widget); - - if (window->default_widget) - { - gtk_widget_activate (window->default_widget); - return; - } - } - } } key_event.Skip();