// Created: 08.02.01
// RCS-ID: $Id$
// Copyright: (c) 2000 Johnny C. Norris II
-// License: Rocketeer license
+// License: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// For compilers that support precompilation, includes "wx.h".
extern wxCursor g_globalCursor;
extern wxWindowGTK *g_delayedFocus;
+extern "C" {
static void gtk_togglebutton_clicked_callback(GtkWidget *WXUNUSED(widget), wxToggleButton *cb)
{
if (g_isIdle)
event.SetEventObject(cb);
cb->GetEventHandler()->ProcessEvent(event);
}
+}
DEFINE_EVENT_TYPE(wxEVT_COMMAND_TOGGLEBUTTON_CLICKED)
if (m_bitmap.Ok())
{
- wxSize newSize = size;
- int border = (style & wxNO_BORDER) ? 4 : 10;
- if (newSize.x == -1)
- newSize.x = m_bitmap.GetWidth()+border;
- if (newSize.y == -1)
- newSize.y = m_bitmap.GetHeight()+border;
- SetSize( newSize.x, newSize.y );
OnSetBitmap();
}
m_parent->DoAddChild(this);
- PostCreation();
- InheritAttributes();
-
- Show( TRUE );
+ PostCreation(size);
return TRUE;
}
wxCHECK_RET(m_widget != NULL, wxT("invalid toggle button"));
m_bitmap = label;
+ InvalidateBestSize();
OnSetBitmap();
}
return TRUE;
}
-void wxToggleBitmapButton::ApplyWidgetStyle()
+void wxToggleBitmapButton::DoApplyWidgetStyle(GtkRcStyle *style)
{
- SetWidgetStyle();
- gtk_widget_set_style(m_widget, m_widgetStyle);
- gtk_widget_set_style(BUTTON_CHILD(m_widget), m_widgetStyle);
+ gtk_widget_modify_style(m_widget, style);
+ gtk_widget_modify_style(BUTTON_CHILD(m_widget), style);
}
bool wxToggleBitmapButton::IsOwnGtkWindow(GdkWindow *window)
UpdateWindowUI(wxUPDATE_UI_FROMIDLE);
}
-// wxSize DoGetBestSize() const
+
// Get the "best" size for this control.
wxSize wxToggleBitmapButton::DoGetBestSize() const
{
- wxSize ret(wxControl::DoGetBestSize());
-
- if (!HasFlag(wxBU_EXACTFIT))
+ wxSize best;
+
+ if (m_bitmap.Ok())
{
- if (ret.x < 80) ret.x = 80;
+ int border = HasFlag(wxNO_BORDER) ? 4 : 10;
+ best.x = m_bitmap.GetWidth()+border;
+ best.y = m_bitmap.GetHeight()+border;
}
-
+ CacheBestSize(best);
+ return best;
+}
+
- return ret;
+// static
+wxVisualAttributes
+wxToggleBitmapButton::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_toggle_button_new);
}
+
+
// ------------------------------------------------------------------------
// wxToggleButton
// ------------------------------------------------------------------------
m_parent->DoAddChild(this);
- 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);
-
- Show(TRUE);
+ PostCreation(size);
return TRUE;
}
return TRUE;
}
-void wxToggleButton::ApplyWidgetStyle()
+void wxToggleButton::DoApplyWidgetStyle(GtkRcStyle *style)
{
- SetWidgetStyle();
- gtk_widget_set_style(m_widget, m_widgetStyle);
- gtk_widget_set_style(BUTTON_CHILD(m_widget), m_widgetStyle);
+ gtk_widget_modify_style(m_widget, style);
+ gtk_widget_modify_style(BUTTON_CHILD(m_widget), style);
}
bool wxToggleButton::IsOwnGtkWindow(GdkWindow *window)
UpdateWindowUI(wxUPDATE_UI_FROMIDLE);
}
-// wxSize DoGetBestSize() const
+
// Get the "best" size for this control.
wxSize wxToggleButton::DoGetBestSize() const
{
if (ret.x < 80) ret.x = 80;
}
+ CacheBestSize(ret);
+ return ret;
+}
- return ret;
+// static
+wxVisualAttributes
+wxToggleButton::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ return GetDefaultAttributesFromGTKWidget(gtk_toggle_button_new);
}
#endif // wxUSE_TOGGLEBTN