#include "generic/callback.h"
#include "warnings.h"
#include "debugging/debugging.h"
+#include "property.h"
-void widget_set_visible(ui::Widget widget, bool shown);
-
-bool widget_is_visible(ui::Widget widget);
+#define GARUX_GTK_WORKAROUND
+#ifndef GARUX_GTK_WORKAROUND
+inline bool widget_is_visible( GtkWidget* widget ){
+ return GTK_WIDGET_VISIBLE( widget ) != FALSE;
+}
-inline void widget_toggle_visible(ui::Widget widget)
-{
- widget_set_visible(widget, !widget_is_visible(widget));
+inline void widget_set_visible( GtkWidget* widget, bool show ){
+ if ( show ) {
+ /* workaround for gtk 2.24 issue: not displayed glwidget after toggle */
+ GtkWidget* glwidget = GTK_WIDGET( g_object_get_data( G_OBJECT( widget ), "glwidget" ) );
+ if ( glwidget ){
+ //if ( widget_is_visible( glwidget ) )
+ //globalOutputStream() << "glwidget have been already visible :0\n"; /* is not hidden aswell, according to this */
+ gtk_widget_hide( glwidget );
+ gtk_widget_show( glwidget );
+ }
+ gtk_widget_show( widget );
+ }
+ else
+ {
+ gtk_widget_hide( widget );
+ }
}
+#endif
class ToggleItem {
- BoolExportCallback m_exportCallback;
- typedef std::list<BoolImportCallback> ImportCallbacks;
+ Callback<void(const Callback<void(bool)> &)> m_exportCallback;
+ typedef std::list<Callback<void(bool)>> ImportCallbacks;
ImportCallbacks m_importCallbacks;
public:
- ToggleItem(const BoolExportCallback &exportCallback) : m_exportCallback(exportCallback)
+ ToggleItem(const Callback<void(const Callback<void(bool)> &)> &exportCallback) : m_exportCallback(exportCallback)
{
}
}
}
- void addCallback(const BoolImportCallback &callback)
+ void addCallback(const Callback<void(bool)> &callback)
{
m_importCallbacks.push_back(callback);
m_exportCallback(callback);
}
- typedef MemberCaller1<ToggleItem, const BoolImportCallback &, &ToggleItem::addCallback> AddCallbackCaller;
+ typedef MemberCaller<ToggleItem, void(const Callback<void(bool)> &), &ToggleItem::addCallback> AddCallbackCaller;
};
class ToggleShown {
ToggleItem m_item;
ToggleShown(bool shown)
- : m_shownDeferred(shown), m_widget(0), m_item(ActiveCaller(*this))
+ : m_shownDeferred(shown), m_widget(ui::null), m_item(ActiveCaller(*this))
{
}
bool active() const;
- void exportActive(const BoolImportCallback &importCallback);
+ void exportActive(const Callback<void(bool)> &importCallback);
- typedef MemberCaller1<ToggleShown, const BoolImportCallback &, &ToggleShown::exportActive> ActiveCaller;
+ typedef MemberCaller<ToggleShown, void(const Callback<void(bool)> &), &ToggleShown::exportActive> ActiveCaller;
void set(bool shown);
void toggle();
- typedef MemberCaller<ToggleShown, &ToggleShown::toggle> ToggleCaller;
+ typedef MemberCaller<ToggleShown, void(), &ToggleShown::toggle> ToggleCaller;
void connect(ui::Widget widget);
};
void widget_queue_draw(ui::Widget &widget);
-typedef ReferenceCaller<ui::Widget, widget_queue_draw> WidgetQueueDrawCaller;
+typedef ReferenceCaller<ui::Widget, void(), widget_queue_draw> WidgetQueueDrawCaller;
void widget_make_default(ui::Widget widget);