/* handle.c generated by valac 0.40.8, the Vala compiler
* generated from handle.vala, do not modify */
/* vim:set et sts=4 sw=4:
*
* ibus - The Input Bus
*
* Copyright(c) 2011-2016 Peng Huang <shawn.p.huang@gmail.com>
* Copyright(c) 2016-2017 Takao Fujiwara <takao.fujiwara1@gmail.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
* USA
*/
#include <glib.h>
#include <glib-object.h>
#include <gtk/gtk.h>
#include <gdk/gdk.h>
#include <cairo.h>
#include <string.h>
#include <float.h>
#include <math.h>
#define TYPE_HANDLE (handle_get_type ())
#define HANDLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_HANDLE, Handle))
#define HANDLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_HANDLE, HandleClass))
#define IS_HANDLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_HANDLE))
#define IS_HANDLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_HANDLE))
#define HANDLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_HANDLE, HandleClass))
typedef struct _Handle Handle;
typedef struct _HandleClass HandleClass;
typedef struct _HandlePrivate HandlePrivate;
enum {
HANDLE_0_PROPERTY,
HANDLE_NUM_PROPERTIES
};
static GParamSpec* handle_properties[HANDLE_NUM_PROPERTIES];
#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
enum {
HANDLE_MOVE_BEGIN_SIGNAL,
HANDLE_MOVE_END_SIGNAL,
HANDLE_NUM_SIGNALS
};
static guint handle_signals[HANDLE_NUM_SIGNALS] = {0};
struct _Handle {
GtkEventBox parent_instance;
HandlePrivate * priv;
};
struct _HandleClass {
GtkEventBoxClass parent_class;
};
struct _HandlePrivate {
gboolean m_move_begined;
GdkRectangle m_workarea;
GdkPoint m_press_pos;
};
static gpointer handle_parent_class = NULL;
GType handle_get_type (void) G_GNUC_CONST;
#define HANDLE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_HANDLE, HandlePrivate))
Handle* handle_new (void);
Handle* handle_construct (GType object_type);
static void handle_real_realize (GtkWidget* base);
static gboolean handle_real_button_press_event (GtkWidget* base,
GdkEventButton* event);
static gboolean handle_real_button_release_event (GtkWidget* base,
GdkEventButton* event);
static gboolean handle_real_motion_notify_event (GtkWidget* base,
GdkEventMotion* event);
static gboolean handle_real_draw (GtkWidget* base,
cairo_t* cr);
static void handle_finalize (GObject * obj);
static gpointer
_g_object_ref0 (gpointer self)
{
return self ? g_object_ref (self) : NULL;
}
Handle*
handle_construct (GType object_type)
{
Handle * self = NULL;
GdkEventMask mask = 0;
GtkCssProvider* css_provider = NULL;
GtkCssProvider* _tmp0_;
GtkStyleContext* context = NULL;
GtkStyleContext* _tmp3_;
GtkStyleContext* _tmp4_;
GError * _inner_error_ = NULL;
self = (Handle*) g_object_new (object_type, "name", "IBusHandle", NULL);
gtk_widget_set_size_request ((GtkWidget*) self, 6, -1);
mask = ((GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK) | GDK_BUTTON_RELEASE_MASK) | GDK_BUTTON1_MOTION_MASK;
gtk_widget_set_events ((GtkWidget*) self, (gint) mask);
self->priv->m_move_begined = FALSE;
_tmp0_ = gtk_css_provider_new ();
css_provider = _tmp0_;
{
gtk_css_provider_load_from_data (css_provider, "#IBusHandle { background-color: gray }", (gssize) -1, &_inner_error_);
if (G_UNLIKELY (_inner_error_ != NULL)) {
goto __catch2_g_error;
}
}
goto __finally2;
__catch2_g_error:
{
GError* _error_ = NULL;
GError* _tmp1_;
const gchar* _tmp2_;
_error_ = _inner_error_;
_inner_error_ = NULL;
_tmp1_ = _error_;
_tmp2_ = _tmp1_->message;
g_warning ("handle.vala:53: Parse error in Handle: %s", _tmp2_);
_g_error_free0 (_error_);
}
__finally2:
if (G_UNLIKELY (_inner_error_ != NULL)) {
_g_object_unref0 (css_provider);
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
g_clear_error (&_inner_error_);
return NULL;
}
_tmp3_ = gtk_widget_get_style_context ((GtkWidget*) self);
_tmp4_ = _g_object_ref0 (_tmp3_);
context = _tmp4_;
gtk_style_context_add_provider (context, (GtkStyleProvider*) css_provider, (guint) GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
_g_object_unref0 (context);
_g_object_unref0 (css_provider);
return self;
}
Handle*
handle_new (void)
{
return handle_construct (TYPE_HANDLE);
}
static void
handle_real_realize (GtkWidget* base)
{
Handle * self;
self = (Handle*) base;
GTK_WIDGET_CLASS (handle_parent_class)->realize ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_event_box_get_type (), GtkEventBox));
}
static gboolean
handle_real_button_press_event (GtkWidget* base,
GdkEventButton* event)
{
Handle * self;
gboolean result = FALSE;
guint _tmp0_;
GdkRectangle _tmp1_ = {0};
GdkRectangle _tmp2_;
gint x = 0;
gint y = 0;
GtkWindow* toplevel = NULL;
GtkWidget* _tmp99_;
GtkWindow* _tmp100_;
GtkWindow* _tmp101_;
gint _tmp102_ = 0;
gint _tmp103_ = 0;
gdouble _tmp104_;
gint _tmp105_;
gdouble _tmp106_;
gint _tmp107_;
self = (Handle*) base;
g_return_val_if_fail (event != NULL, FALSE);
_tmp0_ = event->button;
if (_tmp0_ != ((guint) 1)) {
result = FALSE;
return result;
}
memset (&_tmp1_, 0, sizeof (GdkRectangle));
_tmp1_.x = 0;
_tmp1_.y = 0;
_tmp1_.width = G_MAXINT;
_tmp1_.height = G_MAXINT;
self->priv->m_workarea = _tmp1_;
_tmp2_ = self->priv->m_workarea;
{
gboolean _tmp3_ = FALSE;
_tmp3_ = TRUE;
while (TRUE) {
GdkWindow* root = NULL;
GdkWindow* _tmp4_;
GdkWindow* _tmp5_;
GdkAtom property = 0U;
GdkAtom type = 0U;
GdkAtom actual_type = 0U;
gint format = 0;
guchar* data = NULL;
gint data_length1 = 0;
gint _data_size_ = 0;
gboolean _result_ = FALSE;
GdkWindow* _tmp6_;
GdkAtom _tmp7_;
GdkAtom _tmp8_;
GdkAtom _tmp9_ = 0U;
gint _tmp10_ = 0;
guint8* _tmp11_ = NULL;
gint _tmp12_;
gboolean _tmp13_;
gboolean _tmp14_ = FALSE;
gboolean _tmp15_ = FALSE;
gboolean _tmp16_ = FALSE;
gboolean _tmp17_;
gint index = 0;
guchar* _tmp22_;
gint _tmp22__length1;
guchar _tmp23_;
guchar* _tmp24_;
gint _tmp24__length1;
guchar _tmp25_;
guchar* _tmp26_;
gint _tmp26__length1;
guchar _tmp27_;
guchar* _tmp28_;
gint _tmp28__length1;
guchar _tmp29_;
GdkWindow* _tmp30_;
GdkAtom _tmp31_;
GdkAtom _tmp32_;
GdkAtom _tmp33_ = 0U;
gint _tmp34_ = 0;
guint8* _tmp35_ = NULL;
gint _tmp36_;
gboolean _tmp37_;
gboolean _tmp38_ = FALSE;
gboolean _tmp39_ = FALSE;
gboolean _tmp40_ = FALSE;
gboolean _tmp41_;
gint i = 0;
gint _tmp47_;
guchar* _tmp48_;
gint _tmp48__length1;
gint _tmp49_;
guchar _tmp50_;
guchar* _tmp51_;
gint _tmp51__length1;
gint _tmp52_;
guchar _tmp53_;
guchar* _tmp54_;
gint _tmp54__length1;
gint _tmp55_;
guchar _tmp56_;
guchar* _tmp57_;
gint _tmp57__length1;
gint _tmp58_;
guchar _tmp59_;
gint _tmp60_;
guchar* _tmp61_;
gint _tmp61__length1;
gint _tmp62_;
guchar _tmp63_;
guchar* _tmp64_;
gint _tmp64__length1;
gint _tmp65_;
guchar _tmp66_;
guchar* _tmp67_;
gint _tmp67__length1;
gint _tmp68_;
guchar _tmp69_;
guchar* _tmp70_;
gint _tmp70__length1;
gint _tmp71_;
guchar _tmp72_;
gint _tmp73_;
guchar* _tmp74_;
gint _tmp74__length1;
gint _tmp75_;
guchar _tmp76_;
guchar* _tmp77_;
gint _tmp77__length1;
gint _tmp78_;
guchar _tmp79_;
guchar* _tmp80_;
gint _tmp80__length1;
gint _tmp81_;
guchar _tmp82_;
guchar* _tmp83_;
gint _tmp83__length1;
gint _tmp84_;
guchar _tmp85_;
gint _tmp86_;
guchar* _tmp87_;
gint _tmp87__length1;
gint _tmp88_;
guchar _tmp89_;
guchar* _tmp90_;
gint _tmp90__length1;
gint _tmp91_;
guchar _tmp92_;
guchar* _tmp93_;
gint _tmp93__length1;
gint _tmp94_;
guchar _tmp95_;
guchar* _tmp96_;
gint _tmp96__length1;
gint _tmp97_;
guchar _tmp98_;
if (!_tmp3_) {
if (!FALSE) {
break;
}
}
_tmp3_ = FALSE;
_tmp4_ = gdk_get_default_root_window ();
_tmp5_ = _g_object_ref0 (_tmp4_);
root = _tmp5_;
property = gdk_atom_intern ("_NET_CURRENT_DESKTOP", FALSE);
type = gdk_atom_intern ("CARDINAL", FALSE);
_tmp6_ = root;
_tmp7_ = property;
_tmp8_ = type;
_tmp13_ = gdk_property_get (_tmp6_, _tmp7_, _tmp8_, (gulong) 0, (gulong) G_MAXLONG, 0, &_tmp9_, &_tmp10_, &_tmp12_, &_tmp11_);
actual_type = _tmp9_;
format = _tmp10_;
data = (g_free (data), NULL);
data = _tmp11_;
data_length1 = _tmp12_;
_data_size_ = data_length1;
_result_ = _tmp13_;
_tmp17_ = _result_;
if (!_tmp17_) {
_tmp16_ = TRUE;
} else {
GdkAtom _tmp18_;
GdkAtom _tmp19_;
_tmp18_ = actual_type;
_tmp19_ = type;
_tmp16_ = _tmp18_ != _tmp19_;
}
if (_tmp16_) {
_tmp15_ = TRUE;
} else {
gint _tmp20_;
_tmp20_ = format;
_tmp15_ = _tmp20_ != 32;
}
if (_tmp15_) {
_tmp14_ = TRUE;
} else {
guchar* _tmp21_;
gint _tmp21__length1;
_tmp21_ = data;
_tmp21__length1 = data_length1;
_tmp14_ = _tmp21__length1 != 4;
}
if (_tmp14_) {
data = (g_free (data), NULL);
_g_object_unref0 (root);
break;
}
_tmp22_ = data;
_tmp22__length1 = data_length1;
_tmp23_ = _tmp22_[0];
_tmp24_ = data;
_tmp24__length1 = data_length1;
_tmp25_ = _tmp24_[1];
_tmp26_ = data;
_tmp26__length1 = data_length1;
_tmp27_ = _tmp26_[2];
_tmp28_ = data;
_tmp28__length1 = data_length1;
_tmp29_ = _tmp28_[3];
index = (gint) (((_tmp23_ | (_tmp25_ << 8)) | (_tmp27_ << 16)) | (_tmp29_ << 24));
property = gdk_atom_intern ("_NET_WORKAREA", FALSE);
type = gdk_atom_intern ("CARDINAL", FALSE);
_tmp30_ = root;
_tmp31_ = property;
_tmp32_ = type;
_tmp37_ = gdk_property_get (_tmp30_, _tmp31_, _tmp32_, (gulong) 0, (gulong) G_MAXLONG, 0, &_tmp33_, &_tmp34_, &_tmp36_, &_tmp35_);
actual_type = _tmp33_;
format = _tmp34_;
data = (g_free (data), NULL);
data = _tmp35_;
data_length1 = _tmp36_;
_data_size_ = data_length1;
_result_ = _tmp37_;
_tmp41_ = _result_;
if (!_tmp41_) {
_tmp40_ = TRUE;
} else {
GdkAtom _tmp42_;
GdkAtom _tmp43_;
_tmp42_ = actual_type;
_tmp43_ = type;
_tmp40_ = _tmp42_ != _tmp43_;
}
if (_tmp40_) {
_tmp39_ = TRUE;
} else {
gint _tmp44_;
_tmp44_ = format;
_tmp39_ = _tmp44_ != 32;
}
if (_tmp39_) {
_tmp38_ = TRUE;
} else {
guchar* _tmp45_;
gint _tmp45__length1;
gint _tmp46_;
_tmp45_ = data;
_tmp45__length1 = data_length1;
_tmp46_ = index;
_tmp38_ = _tmp45__length1 < ((_tmp46_ + 1) * 16);
}
if (_tmp38_) {
data = (g_free (data), NULL);
_g_object_unref0 (root);
break;
}
_tmp47_ = index;
i = (_tmp47_ * 4) * 4;
_tmp48_ = data;
_tmp48__length1 = data_length1;
_tmp49_ = i;
_tmp50_ = _tmp48_[_tmp49_];
_tmp51_ = data;
_tmp51__length1 = data_length1;
_tmp52_ = i;
_tmp53_ = _tmp51_[_tmp52_ + 1];
_tmp54_ = data;
_tmp54__length1 = data_length1;
_tmp55_ = i;
_tmp56_ = _tmp54_[_tmp55_ + 2];
_tmp57_ = data;
_tmp57__length1 = data_length1;
_tmp58_ = i;
_tmp59_ = _tmp57_[_tmp58_ + 3];
self->priv->m_workarea.x = (gint) (((_tmp50_ | (_tmp53_ << 8)) | (_tmp56_ << 16)) | (_tmp59_ << 24));
_tmp60_ = i;
i = _tmp60_ + 4;
_tmp61_ = data;
_tmp61__length1 = data_length1;
_tmp62_ = i;
_tmp63_ = _tmp61_[_tmp62_];
_tmp64_ = data;
_tmp64__length1 = data_length1;
_tmp65_ = i;
_tmp66_ = _tmp64_[_tmp65_ + 1];
_tmp67_ = data;
_tmp67__length1 = data_length1;
_tmp68_ = i;
_tmp69_ = _tmp67_[_tmp68_ + 2];
_tmp70_ = data;
_tmp70__length1 = data_length1;
_tmp71_ = i;
_tmp72_ = _tmp70_[_tmp71_ + 3];
self->priv->m_workarea.y = (gint) (((_tmp63_ | (_tmp66_ << 8)) | (_tmp69_ << 16)) | (_tmp72_ << 24));
_tmp73_ = i;
i = _tmp73_ + 4;
_tmp74_ = data;
_tmp74__length1 = data_length1;
_tmp75_ = i;
_tmp76_ = _tmp74_[_tmp75_];
_tmp77_ = data;
_tmp77__length1 = data_length1;
_tmp78_ = i;
_tmp79_ = _tmp77_[_tmp78_ + 1];
_tmp80_ = data;
_tmp80__length1 = data_length1;
_tmp81_ = i;
_tmp82_ = _tmp80_[_tmp81_ + 2];
_tmp83_ = data;
_tmp83__length1 = data_length1;
_tmp84_ = i;
_tmp85_ = _tmp83_[_tmp84_ + 3];
self->priv->m_workarea.width = (gint) (((_tmp76_ | (_tmp79_ << 8)) | (_tmp82_ << 16)) | (_tmp85_ << 24));
_tmp86_ = i;
i = _tmp86_ + 4;
_tmp87_ = data;
_tmp87__length1 = data_length1;
_tmp88_ = i;
_tmp89_ = _tmp87_[_tmp88_];
_tmp90_ = data;
_tmp90__length1 = data_length1;
_tmp91_ = i;
_tmp92_ = _tmp90_[_tmp91_ + 1];
_tmp93_ = data;
_tmp93__length1 = data_length1;
_tmp94_ = i;
_tmp95_ = _tmp93_[_tmp94_ + 2];
_tmp96_ = data;
_tmp96__length1 = data_length1;
_tmp97_ = i;
_tmp98_ = _tmp96_[_tmp97_ + 3];
self->priv->m_workarea.height = (gint) (((_tmp89_ | (_tmp92_ << 8)) | (_tmp95_ << 16)) | (_tmp98_ << 24));
data = (g_free (data), NULL);
_g_object_unref0 (root);
}
}
self->priv->m_move_begined = TRUE;
_tmp99_ = gtk_widget_get_toplevel ((GtkWidget*) self);
_tmp100_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp99_, gtk_window_get_type (), GtkWindow));
toplevel = _tmp100_;
_tmp101_ = toplevel;
gtk_window_get_position (_tmp101_, &_tmp102_, &_tmp103_);
x = _tmp102_;
y = _tmp103_;
_tmp104_ = event->x_root;
_tmp105_ = x;
self->priv->m_press_pos.x = ((gint) _tmp104_) - _tmp105_;
_tmp106_ = event->y_root;
_tmp107_ = y;
self->priv->m_press_pos.y = ((gint) _tmp106_) - _tmp107_;
g_signal_emit (self, handle_signals[HANDLE_MOVE_BEGIN_SIGNAL], 0);
result = TRUE;
_g_object_unref0 (toplevel);
return result;
}
static gboolean
handle_real_button_release_event (GtkWidget* base,
GdkEventButton* event)
{
Handle * self;
gboolean result = FALSE;
guint _tmp0_;
GdkWindow* _tmp1_;
GdkDisplay* _tmp2_;
GdkCursor* _tmp3_;
GdkCursor* _tmp4_;
self = (Handle*) base;
g_return_val_if_fail (event != NULL, FALSE);
_tmp0_ = event->button;
if (_tmp0_ != ((guint) 1)) {
result = FALSE;
return result;
}
self->priv->m_move_begined = FALSE;
self->priv->m_press_pos.x = 0;
self->priv->m_press_pos.y = 0;
_tmp1_ = gtk_widget_get_window ((GtkWidget*) self);
_tmp2_ = gdk_display_get_default ();
_tmp3_ = gdk_cursor_new_for_display (_tmp2_, GDK_FLEUR);
_tmp4_ = _tmp3_;
gdk_window_set_cursor (_tmp1_, _tmp4_);
_g_object_unref0 (_tmp4_);
g_signal_emit (self, handle_signals[HANDLE_MOVE_END_SIGNAL], 0);
result = TRUE;
return result;
}
static gboolean
handle_real_motion_notify_event (GtkWidget* base,
GdkEventMotion* event)
{
Handle * self;
gboolean result = FALSE;
gboolean _tmp0_;
GtkWindow* toplevel = NULL;
GtkWidget* _tmp1_;
GtkWindow* _tmp2_;
gint x = 0;
gdouble _tmp3_;
GdkPoint _tmp4_;
gint _tmp5_;
gint y = 0;
gdouble _tmp6_;
GdkPoint _tmp7_;
gint _tmp8_;
gboolean _tmp9_ = FALSE;
gint _tmp10_;
GdkRectangle _tmp11_;
gint _tmp12_;
gboolean _tmp18_ = FALSE;
gint _tmp19_;
GdkRectangle _tmp20_;
gint _tmp21_;
gint w = 0;
gint h = 0;
GtkWindow* _tmp27_;
gint _tmp28_ = 0;
gint _tmp29_ = 0;
gboolean _tmp30_ = FALSE;
gint _tmp31_;
gint _tmp32_;
GdkRectangle _tmp33_;
gint _tmp34_;
GdkRectangle _tmp35_;
gint _tmp36_;
gboolean _tmp48_ = FALSE;
gint _tmp49_;
gint _tmp50_;
GdkRectangle _tmp51_;
gint _tmp52_;
GdkRectangle _tmp53_;
gint _tmp54_;
GtkWindow* _tmp66_;
gint _tmp67_;
gint _tmp68_;
self = (Handle*) base;
g_return_val_if_fail (event != NULL, FALSE);
_tmp0_ = self->priv->m_move_begined;
if (!_tmp0_) {
result = FALSE;
return result;
}
_tmp1_ = gtk_widget_get_toplevel ((GtkWidget*) self);
_tmp2_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, gtk_window_get_type (), GtkWindow));
toplevel = _tmp2_;
_tmp3_ = event->x_root;
_tmp4_ = self->priv->m_press_pos;
_tmp5_ = _tmp4_.x;
x = (gint) (_tmp3_ - _tmp5_);
_tmp6_ = event->y_root;
_tmp7_ = self->priv->m_press_pos;
_tmp8_ = _tmp7_.y;
y = (gint) (_tmp6_ - _tmp8_);
_tmp10_ = x;
_tmp11_ = self->priv->m_workarea;
_tmp12_ = _tmp11_.x;
if (_tmp10_ < _tmp12_) {
gint _tmp13_;
GdkRectangle _tmp14_;
gint _tmp15_;
_tmp13_ = x;
_tmp14_ = self->priv->m_workarea;
_tmp15_ = _tmp14_.x;
_tmp9_ = _tmp13_ > (_tmp15_ - 16);
} else {
_tmp9_ = FALSE;
}
if (_tmp9_) {
GdkRectangle _tmp16_;
gint _tmp17_;
_tmp16_ = self->priv->m_workarea;
_tmp17_ = _tmp16_.x;
x = _tmp17_;
}
_tmp19_ = y;
_tmp20_ = self->priv->m_workarea;
_tmp21_ = _tmp20_.y;
if (_tmp19_ < _tmp21_) {
gint _tmp22_;
GdkRectangle _tmp23_;
gint _tmp24_;
_tmp22_ = y;
_tmp23_ = self->priv->m_workarea;
_tmp24_ = _tmp23_.y;
_tmp18_ = _tmp22_ > (_tmp24_ - 16);
} else {
_tmp18_ = FALSE;
}
if (_tmp18_) {
GdkRectangle _tmp25_;
gint _tmp26_;
_tmp25_ = self->priv->m_workarea;
_tmp26_ = _tmp25_.y;
y = _tmp26_;
}
_tmp27_ = toplevel;
gtk_window_get_size (_tmp27_, &_tmp28_, &_tmp29_);
w = _tmp28_;
h = _tmp29_;
_tmp31_ = x;
_tmp32_ = w;
_tmp33_ = self->priv->m_workarea;
_tmp34_ = _tmp33_.x;
_tmp35_ = self->priv->m_workarea;
_tmp36_ = _tmp35_.width;
if ((_tmp31_ + _tmp32_) > (_tmp34_ + _tmp36_)) {
gint _tmp37_;
gint _tmp38_;
GdkRectangle _tmp39_;
gint _tmp40_;
GdkRectangle _tmp41_;
gint _tmp42_;
_tmp37_ = x;
_tmp38_ = w;
_tmp39_ = self->priv->m_workarea;
_tmp40_ = _tmp39_.x;
_tmp41_ = self->priv->m_workarea;
_tmp42_ = _tmp41_.width;
_tmp30_ = (_tmp37_ + _tmp38_) < ((_tmp40_ + _tmp42_) + 16);
} else {
_tmp30_ = FALSE;
}
if (_tmp30_) {
GdkRectangle _tmp43_;
gint _tmp44_;
GdkRectangle _tmp45_;
gint _tmp46_;
gint _tmp47_;
_tmp43_ = self->priv->m_workarea;
_tmp44_ = _tmp43_.x;
_tmp45_ = self->priv->m_workarea;
_tmp46_ = _tmp45_.width;
_tmp47_ = w;
x = (_tmp44_ + _tmp46_) - _tmp47_;
}
_tmp49_ = y;
_tmp50_ = h;
_tmp51_ = self->priv->m_workarea;
_tmp52_ = _tmp51_.y;
_tmp53_ = self->priv->m_workarea;
_tmp54_ = _tmp53_.height;
if ((_tmp49_ + _tmp50_) > (_tmp52_ + _tmp54_)) {
gint _tmp55_;
gint _tmp56_;
GdkRectangle _tmp57_;
gint _tmp58_;
GdkRectangle _tmp59_;
gint _tmp60_;
_tmp55_ = y;
_tmp56_ = h;
_tmp57_ = self->priv->m_workarea;
_tmp58_ = _tmp57_.y;
_tmp59_ = self->priv->m_workarea;
_tmp60_ = _tmp59_.height;
_tmp48_ = (_tmp55_ + _tmp56_) < ((_tmp58_ + _tmp60_) + 16);
} else {
_tmp48_ = FALSE;
}
if (_tmp48_) {
GdkRectangle _tmp61_;
gint _tmp62_;
GdkRectangle _tmp63_;
gint _tmp64_;
gint _tmp65_;
_tmp61_ = self->priv->m_workarea;
_tmp62_ = _tmp61_.y;
_tmp63_ = self->priv->m_workarea;
_tmp64_ = _tmp63_.height;
_tmp65_ = w;
y = (_tmp62_ + _tmp64_) - _tmp65_;
}
_tmp66_ = toplevel;
_tmp67_ = x;
_tmp68_ = y;
gtk_window_move (_tmp66_, _tmp67_, _tmp68_);
result = TRUE;
_g_object_unref0 (toplevel);
return result;
}
static gboolean
handle_real_draw (GtkWidget* base,
cairo_t* cr)
{
Handle * self;
gboolean result = FALSE;
GdkWindow* _tmp0_;
self = (Handle*) base;
g_return_val_if_fail (cr != NULL, FALSE);
_tmp0_ = gtk_widget_get_window ((GtkWidget*) self);
if (gtk_cairo_should_draw_window (cr, _tmp0_)) {
GtkStyleContext* context = NULL;
GtkStyleContext* _tmp1_;
GtkStyleContext* _tmp2_;
GtkAllocation allocation = {0};
GtkAllocation _tmp3_ = {0};
GtkStyleContext* _tmp4_;
GtkAllocation _tmp5_;
gint _tmp6_;
GtkAllocation _tmp7_;
gint _tmp8_;
GtkAllocation _tmp9_;
gint _tmp10_;
GtkAllocation _tmp11_;
gint _tmp12_;
_tmp1_ = gtk_widget_get_style_context ((GtkWidget*) self);
_tmp2_ = _g_object_ref0 (_tmp1_);
context = _tmp2_;
gtk_widget_get_allocation ((GtkWidget*) self, &_tmp3_);
allocation = _tmp3_;
_tmp4_ = context;
_tmp5_ = allocation;
_tmp6_ = _tmp5_.x;
_tmp7_ = allocation;
_tmp8_ = _tmp7_.y;
_tmp9_ = allocation;
_tmp10_ = _tmp9_.height;
_tmp11_ = allocation;
_tmp12_ = _tmp11_.width;
gtk_render_handle (_tmp4_, cr, (gdouble) _tmp6_, (gdouble) (_tmp8_ + ((_tmp10_ - 40) / 2)), (gdouble) _tmp12_, 40.0);
_g_object_unref0 (context);
}
result = FALSE;
return result;
}
static void
handle_class_init (HandleClass * klass)
{
handle_parent_class = g_type_class_peek_parent (klass);
g_type_class_add_private (klass, sizeof (HandlePrivate));
((GtkWidgetClass *) klass)->realize = (void (*) (GtkWidget *)) handle_real_realize;
((GtkWidgetClass *) klass)->button_press_event = (gboolean (*) (GtkWidget *, GdkEventButton*)) handle_real_button_press_event;
((GtkWidgetClass *) klass)->button_release_event = (gboolean (*) (GtkWidget *, GdkEventButton*)) handle_real_button_release_event;
((GtkWidgetClass *) klass)->motion_notify_event = (gboolean (*) (GtkWidget *, GdkEventMotion*)) handle_real_motion_notify_event;
((GtkWidgetClass *) klass)->draw = (gboolean (*) (GtkWidget *, cairo_t*)) handle_real_draw;
G_OBJECT_CLASS (klass)->finalize = handle_finalize;
handle_signals[HANDLE_MOVE_BEGIN_SIGNAL] = g_signal_new ("move-begin", TYPE_HANDLE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
handle_signals[HANDLE_MOVE_END_SIGNAL] = g_signal_new ("move-end", TYPE_HANDLE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
}
static void
handle_instance_init (Handle * self)
{
self->priv = HANDLE_GET_PRIVATE (self);
}
static void
handle_finalize (GObject * obj)
{
Handle * self;
self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_HANDLE, Handle);
G_OBJECT_CLASS (handle_parent_class)->finalize (obj);
}
GType
handle_get_type (void)
{
static volatile gsize handle_type_id__volatile = 0;
if (g_once_init_enter (&handle_type_id__volatile)) {
static const GTypeInfo g_define_type_info = { sizeof (HandleClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) handle_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (Handle), 0, (GInstanceInitFunc) handle_instance_init, NULL };
GType handle_type_id;
handle_type_id = g_type_register_static (gtk_event_box_get_type (), "Handle", &g_define_type_info, 0);
g_once_init_leave (&handle_type_id__volatile, handle_type_id);
}
return handle_type_id__volatile;
}