gtk_container_add( GTK_CONTAINER(m_widget), m_text );
// Global settings which can be overridden by tags, I guess.
- if (HasFlag( wxHSCROLL ))
+ if (HasFlag( wxHSCROLL ) || HasFlag( wxTE_DONTWRAP ))
gtk_text_view_set_wrap_mode( GTK_TEXT_VIEW( m_text ), GTK_WRAP_NONE );
else
gtk_text_view_set_wrap_mode( GTK_TEXT_VIEW( m_text ), GTK_WRAP_WORD );
m_focusWidget = m_text;
- PostCreation();
- InheritAttributes();
-
- wxSize size_best( DoGetBestSize() );
- wxSize new_size( size );
- if (new_size.x == -1)
- new_size.x = size_best.x;
- if (new_size.y == -1)
- new_size.y = size_best.y;
- if ((new_size.x != size.x) || (new_size.y != size.y))
- SetSize( new_size.x, new_size.y );
+ PostCreation(size);
if (multi_line)
gtk_widget_show(m_text);
#ifdef __WXGTK20__
else
gtk_text_view_set_editable( GTK_TEXT_VIEW( m_text), FALSE);
- }
#else
}
else
{
if (multi_line)
gtk_text_set_editable( GTK_TEXT(m_text), 1 );
- }
#endif
+ }
+#ifdef __WXGTK20__
+ if (multi_line)
+ {
+ if (style & wxTE_RIGHT)
+ gtk_text_view_set_justification( GTK_TEXT_VIEW(m_text), GTK_JUSTIFY_RIGHT );
+ else if (style & wxTE_CENTRE)
+ gtk_text_view_set_justification( GTK_TEXT_VIEW(m_text), GTK_JUSTIFY_CENTER );
+ // Left justify (alignment) is the default and we don't need to apply GTK_JUSTIFY_LEFT
+ }
+ // gtk_entry_set_alignment was introduced in gtk+-2.3.5
+#if GTK_CHECK_VERSION(2, 3, 5)
+ else
+ {
+ if (style & wxTE_RIGHT)
+ gtk_entry_set_alignment( GTK_ENTRY(m_text), 1.0 );
+ else if (style & wxTE_CENTRE)
+ gtk_entry_set_alignment( GTK_ENTRY(m_text), 0.5 );
+ }
+#endif // gtk+-2.3.5
+#endif // __WXGTK20__
+
// We want to be notified about text changes.
#ifdef __WXGTK20__
if (multi_line)
}
else
#endif
+
{
gtk_signal_connect( GTK_OBJECT(m_text), "changed",
GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this);
}
- // we don't set a valid background colour, because the window
- // manager should use a default one
- m_backgroundColour = wxColour();
-
- wxColour colFg = parent->GetForegroundColour();
- SetForegroundColour( colFg );
-
m_cursor = wxCursor( wxCURSOR_IBEAM );
- wxTextAttr attrDef( colFg, m_backgroundColour, parent->GetFont() );
+ wxTextAttr attrDef(GetForegroundColour(), GetBackgroundColour(), GetFont());
SetDefaultStyle( attrDef );
- Show( TRUE );
-
return TRUE;
}
+
void wxTextCtrl::CalculateScrollbar()
{
#ifndef __WXGTK20__
}
// GRG, Jun/2000: Changed this after a lot of discussion in
- // the lists. wxWindows 2.2 will have a set of flags to
+ // the lists. wxWidgets 2.2 will have a set of flags to
// customize this behaviour.
SetInsertionPoint(0);
{
wxCHECK_RET( m_text != NULL, wxT("invalid text ctrl") );
-#ifndef __WXGTK20__
- gtk_editable_cut_clipboard( GTK_EDITABLE(m_text) DUMMY_CLIPBOARD_ARG );
+#ifdef __WXGTK20__
+ if (m_windowStyle & wxTE_MULTILINE)
+ g_signal_emit_by_name(m_text, "cut-clipboard");
+ else
#endif
+ gtk_editable_cut_clipboard(GTK_EDITABLE(m_text) DUMMY_CLIPBOARD_ARG);
}
void wxTextCtrl::Copy()
{
wxCHECK_RET( m_text != NULL, wxT("invalid text ctrl") );
-#ifndef __WXGTK20__
- gtk_editable_copy_clipboard( GTK_EDITABLE(m_text) DUMMY_CLIPBOARD_ARG );
+#ifdef __WXGTK20__
+ if (m_windowStyle & wxTE_MULTILINE)
+ g_signal_emit_by_name(m_text, "copy-clipboard");
+ else
#endif
+ gtk_editable_copy_clipboard(GTK_EDITABLE(m_text) DUMMY_CLIPBOARD_ARG);
}
void wxTextCtrl::Paste()
{
wxCHECK_RET( m_text != NULL, wxT("invalid text ctrl") );
-#ifndef __WXGTK20__
- gtk_editable_paste_clipboard( GTK_EDITABLE(m_text) DUMMY_CLIPBOARD_ARG );
+#ifdef __WXGTK20__
+ if (m_windowStyle & wxTE_MULTILINE)
+ g_signal_emit_by_name(m_text, "paste-clipboard");
+ else
#endif
+ gtk_editable_paste_clipboard(GTK_EDITABLE(m_text) DUMMY_CLIPBOARD_ARG);
}
// Undo/redo
if (!m_widget->window)
return FALSE;
- wxColour sysbg = wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE );
- if (sysbg.Red() == colour.Red() &&
- sysbg.Green() == colour.Green() &&
- sysbg.Blue() == colour.Blue())
- {
- return FALSE; // FIXME or TRUE?
- }
-
if (!m_backgroundColour.Ok())
return FALSE;
}
}
-void wxTextCtrl::ApplyWidgetStyle()
+void wxTextCtrl::DoApplyWidgetStyle(GtkRcStyle *style)
{
- if (m_windowStyle & wxTE_MULTILINE)
- {
- // how ?
- }
- else
- {
- SetWidgetStyle();
- gtk_widget_set_style( m_text, m_widgetStyle );
- }
+ gtk_widget_modify_style(m_text, style);
}
void wxTextCtrl::OnCut(wxCommandEvent& WXUNUSED(event))
{
// FIXME should be different for multi-line controls...
wxSize ret( wxControl::DoGetBestSize() );
- return wxSize(80, ret.y);
+ wxSize best(80, ret.y);
+ CacheBestSize(best);
+ return best;
}
// ----------------------------------------------------------------------------
#endif
}
+
+// static
+wxVisualAttributes
+wxTextCtrl::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_entry_new, true);
+}