More colour finetuning

Corrected wxCheckBoc and wxRadioButton::SetValue


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1180 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
1998-12-12 17:27:01 +00:00
parent 1ecc4d808e
commit ae0bdb016f
9 changed files with 163 additions and 93 deletions

View File

@@ -90,6 +90,7 @@ class MyPanel: public wxPanel
wxSpinButton *m_spinbutton; wxSpinButton *m_spinbutton;
wxTextCtrl *m_spintext; wxTextCtrl *m_spintext;
wxTextCtrl *m_multitext; wxTextCtrl *m_multitext;
wxCheckBox *m_checkbox;
wxTextCtrl *m_text; wxTextCtrl *m_text;
wxNotebook *m_notebook; wxNotebook *m_notebook;
@@ -310,7 +311,7 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) :
(void)new wxButton( panel, ID_LISTBOX_DELETE, "Delete selected item", wxPoint(180,130), wxSize(140,30) ); (void)new wxButton( panel, ID_LISTBOX_DELETE, "Delete selected item", wxPoint(180,130), wxSize(140,30) );
button = new wxButton( panel, ID_LISTBOX_FONT, "Set Italic font", wxPoint(340,130), wxSize(140,30) ); button = new wxButton( panel, ID_LISTBOX_FONT, "Set Italic font", wxPoint(340,130), wxSize(140,30) );
// button->SetForegroundColour( "red" ); // button->SetForegroundColour( "red" );
(void)new wxCheckBox( panel, ID_LISTBOX_ENABLE, "Disable", wxPoint(20,130), wxSize(140,30) ); m_checkbox = new wxCheckBox( panel, ID_LISTBOX_ENABLE, "Disable", wxPoint(20,130), wxSize(140,30) );
m_notebook->AddPage(panel, "wxList", FALSE, Image_List); m_notebook->AddPage(panel, "wxList", FALSE, Image_List);
panel = new wxPanel(m_notebook); panel = new wxPanel(m_notebook);
@@ -505,6 +506,7 @@ void MyPanel::OnListBoxButtons( wxCommandEvent &event )
case ID_LISTBOX_FONT: case ID_LISTBOX_FONT:
{ {
m_listbox->SetFont( *wxITALIC_FONT ); m_listbox->SetFont( *wxITALIC_FONT );
m_checkbox->SetFont( *wxITALIC_FONT );
break; break;
} }
} }

View File

@@ -95,13 +95,10 @@ bool wxCheckBox::Create( wxWindow *parent, wxWindowID id, const wxString &label
void wxCheckBox::SetValue( bool state ) void wxCheckBox::SetValue( bool state )
{ {
wxCHECK_RET( m_widget != NULL, "invalid checkbox" ); wxCHECK_RET( m_widget != NULL, "invalid checkbox" );
if (state)
gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(m_widget), GTK_STATE_ACTIVE );
else
gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(m_widget), GTK_STATE_NORMAL );
m_blockFirstEvent = TRUE; m_blockFirstEvent = TRUE;
gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(m_widget), state );
} }
bool wxCheckBox::GetValue() const bool wxCheckBox::GetValue() const

View File

@@ -102,9 +102,9 @@ void wxRadioButton::SetValue( bool val )
{ {
wxCHECK_RET( m_widget != NULL, "invalid radiobutton" ); wxCHECK_RET( m_widget != NULL, "invalid radiobutton" );
gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(m_widget), val );
m_blockFirstEvent = TRUE; m_blockFirstEvent = TRUE;
gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(m_widget), val );
} }
bool wxRadioButton::GetValue(void) const bool wxRadioButton::GetValue(void) const

View File

@@ -13,7 +13,8 @@
#include "wx/textctrl.h" #include "wx/textctrl.h"
#include "wx/utils.h" #include "wx/utils.h"
#include <wx/intl.h> #include "wx/intl.h"
#include "wx/settings.h"
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
@@ -645,57 +646,65 @@ wxTextCtrl& wxTextCtrl::operator<<(const char c)
GtkWidget* wxTextCtrl::GetConnectWidget() GtkWidget* wxTextCtrl::GetConnectWidget()
{ {
return GTK_WIDGET(m_text); return GTK_WIDGET(m_text);
} }
bool wxTextCtrl::IsOwnGtkWindow( GdkWindow *window ) bool wxTextCtrl::IsOwnGtkWindow( GdkWindow *window )
{ {
if (m_windowStyle & wxTE_MULTILINE) if (m_windowStyle & wxTE_MULTILINE)
return (window == GTK_TEXT(m_text)->text_area); return (window == GTK_TEXT(m_text)->text_area);
else else
return (window == GTK_ENTRY(m_text)->text_area); return (window == GTK_ENTRY(m_text)->text_area);
} }
void wxTextCtrl::SetFont( const wxFont &WXUNUSED(font) ) void wxTextCtrl::SetFont( const wxFont &WXUNUSED(font) )
{ {
wxCHECK_RET( m_text != NULL, "invalid text ctrl" ); wxCHECK_RET( m_text != NULL, "invalid text ctrl" );
// doesn't work // doesn't work
} }
void wxTextCtrl::SetForegroundColour( const wxColour &WXUNUSED(colour) ) void wxTextCtrl::SetForegroundColour( const wxColour &WXUNUSED(colour) )
{ {
wxCHECK_RET( m_text != NULL, "invalid text ctrl" ); wxCHECK_RET( m_text != NULL, "invalid text ctrl" );
// doesn't work // doesn't work
} }
void wxTextCtrl::SetBackgroundColour( const wxColour &colour ) void wxTextCtrl::SetBackgroundColour( const wxColour &colour )
{ {
wxCHECK_RET( m_text != NULL, "invalid text ctrl" ); wxCHECK_RET( m_text != NULL, "invalid text ctrl" );
wxControl::SetBackgroundColour( colour ); wxControl::SetBackgroundColour( colour );
if (!m_backgroundColour.Ok()) return; wxColour sysbg = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE );
if (sysbg.Red() == colour.Red() &&
sysbg.Green() == colour.Green() &&
sysbg.Blue() == colour.Blue())
{
return;
}
if (!m_backgroundColour.Ok()) return;
if (m_windowStyle & wxTE_MULTILINE) if (m_windowStyle & wxTE_MULTILINE)
{ {
GdkWindow *window = GTK_TEXT(m_text)->text_area; GdkWindow *window = GTK_TEXT(m_text)->text_area;
m_backgroundColour.CalcPixel( gdk_window_get_colormap( window ) ); m_backgroundColour.CalcPixel( gdk_window_get_colormap( window ) );
gdk_window_set_background( window, m_backgroundColour.GetColor() ); gdk_window_set_background( window, m_backgroundColour.GetColor() );
gdk_window_clear( window ); gdk_window_clear( window );
} }
} }
void wxTextCtrl::ApplyWidgetStyle() void wxTextCtrl::ApplyWidgetStyle()
{ {
if (m_windowStyle & wxTE_MULTILINE) if (m_windowStyle & wxTE_MULTILINE)
{ {
} }
else else
{ {
SetWidgetStyle(); SetWidgetStyle();
gtk_widget_set_style( m_text, m_widgetStyle ); gtk_widget_set_style( m_text, m_widgetStyle );
} }
} }

View File

@@ -2164,14 +2164,6 @@ void wxWindow::SetBackgroundColour( const wxColour &colour )
if (m_backgroundColour == colour) return; if (m_backgroundColour == colour) return;
wxColour sysbg = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE );
if (sysbg.Red() == colour.Red() &&
sysbg.Green() == colour.Green() &&
sysbg.Blue() == colour.Blue())
{
return;
}
m_backgroundColour = colour; m_backgroundColour = colour;
if (!m_backgroundColour.Ok()) return; if (!m_backgroundColour.Ok()) return;
@@ -2183,7 +2175,19 @@ void wxWindow::SetBackgroundColour( const wxColour &colour )
gdk_window_clear( window ); gdk_window_clear( window );
} }
ApplyWidgetStyle(); wxColour sysbg = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE );
if (sysbg.Red() == colour.Red() &&
sysbg.Green() == colour.Green() &&
sysbg.Blue() == colour.Blue())
{
m_backgroundColour = wxNullColour;
ApplyWidgetStyle();
m_backgroundColour = sysbg;
}
else
{
ApplyWidgetStyle();
}
} }
wxColour wxWindow::GetForegroundColour() const wxColour wxWindow::GetForegroundColour() const
@@ -2200,7 +2204,19 @@ void wxWindow::SetForegroundColour( const wxColour &colour )
m_foregroundColour = colour; m_foregroundColour = colour;
if (!m_foregroundColour.Ok()) return; if (!m_foregroundColour.Ok()) return;
ApplyWidgetStyle(); wxColour sysbg = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE );
if (sysbg.Red() == colour.Red() &&
sysbg.Green() == colour.Green() &&
sysbg.Blue() == colour.Blue())
{
m_backgroundColour = wxNullColour;
ApplyWidgetStyle();
m_backgroundColour = sysbg;
}
else
{
ApplyWidgetStyle();
}
} }
GtkStyle *wxWindow::GetWidgetStyle() GtkStyle *wxWindow::GetWidgetStyle()
@@ -2395,7 +2411,19 @@ void wxWindow::SetFont( const wxFont &font )
else else
m_font = *wxSWISS_FONT; m_font = *wxSWISS_FONT;
ApplyWidgetStyle(); wxColour sysbg = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE );
if (sysbg.Red() == m_backgroundColour.Red() &&
sysbg.Green() == m_backgroundColour.Green() &&
sysbg.Blue() == m_backgroundColour.Blue())
{
m_backgroundColour = wxNullColour;
ApplyWidgetStyle();
m_backgroundColour = sysbg;
}
else
{
ApplyWidgetStyle();
}
} }
void wxWindow::SetWindowStyleFlag( long flag ) void wxWindow::SetWindowStyleFlag( long flag )

View File

@@ -95,13 +95,10 @@ bool wxCheckBox::Create( wxWindow *parent, wxWindowID id, const wxString &label
void wxCheckBox::SetValue( bool state ) void wxCheckBox::SetValue( bool state )
{ {
wxCHECK_RET( m_widget != NULL, "invalid checkbox" ); wxCHECK_RET( m_widget != NULL, "invalid checkbox" );
if (state)
gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(m_widget), GTK_STATE_ACTIVE );
else
gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(m_widget), GTK_STATE_NORMAL );
m_blockFirstEvent = TRUE; m_blockFirstEvent = TRUE;
gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(m_widget), state );
} }
bool wxCheckBox::GetValue() const bool wxCheckBox::GetValue() const

View File

@@ -102,9 +102,9 @@ void wxRadioButton::SetValue( bool val )
{ {
wxCHECK_RET( m_widget != NULL, "invalid radiobutton" ); wxCHECK_RET( m_widget != NULL, "invalid radiobutton" );
gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(m_widget), val );
m_blockFirstEvent = TRUE; m_blockFirstEvent = TRUE;
gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(m_widget), val );
} }
bool wxRadioButton::GetValue(void) const bool wxRadioButton::GetValue(void) const

View File

@@ -13,7 +13,8 @@
#include "wx/textctrl.h" #include "wx/textctrl.h"
#include "wx/utils.h" #include "wx/utils.h"
#include <wx/intl.h> #include "wx/intl.h"
#include "wx/settings.h"
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
@@ -645,57 +646,65 @@ wxTextCtrl& wxTextCtrl::operator<<(const char c)
GtkWidget* wxTextCtrl::GetConnectWidget() GtkWidget* wxTextCtrl::GetConnectWidget()
{ {
return GTK_WIDGET(m_text); return GTK_WIDGET(m_text);
} }
bool wxTextCtrl::IsOwnGtkWindow( GdkWindow *window ) bool wxTextCtrl::IsOwnGtkWindow( GdkWindow *window )
{ {
if (m_windowStyle & wxTE_MULTILINE) if (m_windowStyle & wxTE_MULTILINE)
return (window == GTK_TEXT(m_text)->text_area); return (window == GTK_TEXT(m_text)->text_area);
else else
return (window == GTK_ENTRY(m_text)->text_area); return (window == GTK_ENTRY(m_text)->text_area);
} }
void wxTextCtrl::SetFont( const wxFont &WXUNUSED(font) ) void wxTextCtrl::SetFont( const wxFont &WXUNUSED(font) )
{ {
wxCHECK_RET( m_text != NULL, "invalid text ctrl" ); wxCHECK_RET( m_text != NULL, "invalid text ctrl" );
// doesn't work // doesn't work
} }
void wxTextCtrl::SetForegroundColour( const wxColour &WXUNUSED(colour) ) void wxTextCtrl::SetForegroundColour( const wxColour &WXUNUSED(colour) )
{ {
wxCHECK_RET( m_text != NULL, "invalid text ctrl" ); wxCHECK_RET( m_text != NULL, "invalid text ctrl" );
// doesn't work // doesn't work
} }
void wxTextCtrl::SetBackgroundColour( const wxColour &colour ) void wxTextCtrl::SetBackgroundColour( const wxColour &colour )
{ {
wxCHECK_RET( m_text != NULL, "invalid text ctrl" ); wxCHECK_RET( m_text != NULL, "invalid text ctrl" );
wxControl::SetBackgroundColour( colour ); wxControl::SetBackgroundColour( colour );
if (!m_backgroundColour.Ok()) return; wxColour sysbg = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE );
if (sysbg.Red() == colour.Red() &&
sysbg.Green() == colour.Green() &&
sysbg.Blue() == colour.Blue())
{
return;
}
if (!m_backgroundColour.Ok()) return;
if (m_windowStyle & wxTE_MULTILINE) if (m_windowStyle & wxTE_MULTILINE)
{ {
GdkWindow *window = GTK_TEXT(m_text)->text_area; GdkWindow *window = GTK_TEXT(m_text)->text_area;
m_backgroundColour.CalcPixel( gdk_window_get_colormap( window ) ); m_backgroundColour.CalcPixel( gdk_window_get_colormap( window ) );
gdk_window_set_background( window, m_backgroundColour.GetColor() ); gdk_window_set_background( window, m_backgroundColour.GetColor() );
gdk_window_clear( window ); gdk_window_clear( window );
} }
} }
void wxTextCtrl::ApplyWidgetStyle() void wxTextCtrl::ApplyWidgetStyle()
{ {
if (m_windowStyle & wxTE_MULTILINE) if (m_windowStyle & wxTE_MULTILINE)
{ {
} }
else else
{ {
SetWidgetStyle(); SetWidgetStyle();
gtk_widget_set_style( m_text, m_widgetStyle ); gtk_widget_set_style( m_text, m_widgetStyle );
} }
} }

View File

@@ -2164,14 +2164,6 @@ void wxWindow::SetBackgroundColour( const wxColour &colour )
if (m_backgroundColour == colour) return; if (m_backgroundColour == colour) return;
wxColour sysbg = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE );
if (sysbg.Red() == colour.Red() &&
sysbg.Green() == colour.Green() &&
sysbg.Blue() == colour.Blue())
{
return;
}
m_backgroundColour = colour; m_backgroundColour = colour;
if (!m_backgroundColour.Ok()) return; if (!m_backgroundColour.Ok()) return;
@@ -2183,7 +2175,19 @@ void wxWindow::SetBackgroundColour( const wxColour &colour )
gdk_window_clear( window ); gdk_window_clear( window );
} }
ApplyWidgetStyle(); wxColour sysbg = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE );
if (sysbg.Red() == colour.Red() &&
sysbg.Green() == colour.Green() &&
sysbg.Blue() == colour.Blue())
{
m_backgroundColour = wxNullColour;
ApplyWidgetStyle();
m_backgroundColour = sysbg;
}
else
{
ApplyWidgetStyle();
}
} }
wxColour wxWindow::GetForegroundColour() const wxColour wxWindow::GetForegroundColour() const
@@ -2200,7 +2204,19 @@ void wxWindow::SetForegroundColour( const wxColour &colour )
m_foregroundColour = colour; m_foregroundColour = colour;
if (!m_foregroundColour.Ok()) return; if (!m_foregroundColour.Ok()) return;
ApplyWidgetStyle(); wxColour sysbg = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE );
if (sysbg.Red() == colour.Red() &&
sysbg.Green() == colour.Green() &&
sysbg.Blue() == colour.Blue())
{
m_backgroundColour = wxNullColour;
ApplyWidgetStyle();
m_backgroundColour = sysbg;
}
else
{
ApplyWidgetStyle();
}
} }
GtkStyle *wxWindow::GetWidgetStyle() GtkStyle *wxWindow::GetWidgetStyle()
@@ -2395,7 +2411,19 @@ void wxWindow::SetFont( const wxFont &font )
else else
m_font = *wxSWISS_FONT; m_font = *wxSWISS_FONT;
ApplyWidgetStyle(); wxColour sysbg = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE );
if (sysbg.Red() == m_backgroundColour.Red() &&
sysbg.Green() == m_backgroundColour.Green() &&
sysbg.Blue() == m_backgroundColour.Blue())
{
m_backgroundColour = wxNullColour;
ApplyWidgetStyle();
m_backgroundColour = sysbg;
}
else
{
ApplyWidgetStyle();
}
} }
void wxWindow::SetWindowStyleFlag( long flag ) void wxWindow::SetWindowStyleFlag( long flag )