mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-15 14:16:07 -06:00
74 lines
1.2 KiB
C++
74 lines
1.2 KiB
C++
#include <CtrlCore/CtrlCore.h>
|
|
|
|
#ifdef GUI_GTK
|
|
|
|
namespace Upp {
|
|
|
|
DHCtrl::DHCtrl()
|
|
{
|
|
fixed = widget = NULL;
|
|
}
|
|
|
|
DHCtrl::~DHCtrl()
|
|
{
|
|
CloseGtk();
|
|
}
|
|
|
|
void DHCtrl::OpenGtk()
|
|
{
|
|
Ctrl *top = GetTopCtrl();
|
|
if(!top)
|
|
return;
|
|
DDUMP(top->gdk());
|
|
fixed = gtk_fixed_new();
|
|
gtk_fixed_set_has_window((GtkFixed *)fixed, true);
|
|
gtk_container_add(GTK_CONTAINER(top->gtk()), fixed);
|
|
gtk_widget_realize(fixed);
|
|
gtk_widget_show(fixed);
|
|
|
|
SetupWidget(fixed, NULL);
|
|
DDUMP(fixed);
|
|
DDUMP(gtk());
|
|
DDUMP(gdk());
|
|
|
|
widget = gtk_button_new_with_label("TEST");
|
|
gtk_fixed_put((GtkFixed *)fixed, widget, 0, 0);
|
|
gtk_widget_realize(widget);
|
|
gtk_widget_show(widget);
|
|
}
|
|
|
|
void DHCtrl::SyncGtk()
|
|
{
|
|
// optimize...
|
|
if(fixed && widget) {
|
|
Rect r = GetRect();
|
|
gtk_widget_set_size_request(widget, r.GetWidth(), r.GetHeight());
|
|
gtk_fixed_move((GtkFixed *)fixed, widget, r.left, r.top);
|
|
}
|
|
}
|
|
|
|
void DHCtrl::CloseGtk()
|
|
{
|
|
if(widget)
|
|
gtk_widget_destroy(widget);
|
|
if(fixed)
|
|
WndDestroy();
|
|
fixed = widget = NULL;
|
|
}
|
|
|
|
void DHCtrl::State(int reason)
|
|
{
|
|
switch(reason) {
|
|
case OPEN:
|
|
OpenGtk();
|
|
default:
|
|
SyncGtk();
|
|
break;
|
|
case CLOSE:
|
|
CloseGtk();
|
|
}
|
|
}
|
|
|
|
};
|
|
|
|
#endif
|