-#if !defined(__WIN32__) || !wxUSE_NATIVE_STATUSBAR
- IMPLEMENT_DYNAMIC_CLASS(wxStatusBar, wxStatusBarGeneric)
-#endif // Win32 && wxUSE_NATIVE_STATUSBAR
+// Default status border dimensions
+#define wxTHICK_LINE_BORDER 2
+
+// Margin between the field text and the field rect
+#define wxFIELD_TEXT_MARGIN 2
+
+// ----------------------------------------------------------------------------
+// GTK+ signal handler
+// ----------------------------------------------------------------------------
+
+#if defined( __WXGTK20__ )
+#if GTK_CHECK_VERSION(2,12,0)
+extern "C" {
+static
+gboolean statusbar_query_tooltip(GtkWidget* WXUNUSED(widget),
+ gint x,
+ gint y,
+ gboolean WXUNUSED(keyboard_mode),
+ GtkTooltip *tooltip,
+ wxStatusBar* statbar)
+{
+ int n = statbar->GetFieldFromPoint(wxPoint(x,y));
+ if (n == wxNOT_FOUND)
+ return FALSE;
+
+ // should we show the tooltip for the n-th pane of the statusbar?
+ if (!statbar->GetField(n).IsEllipsized())
+ return FALSE; // no, it's not useful
+
+ const wxString& str = statbar->GetStatusText(n);
+ if (str.empty())
+ return FALSE;
+
+ gtk_tooltip_set_text(tooltip, wxGTK_CONV_SYS(str));
+ return TRUE;
+}
+}
+#endif
+#endif
+
+// ----------------------------------------------------------------------------
+// wxStatusBarGeneric
+// ----------------------------------------------------------------------------