1 /* handle.c generated by valac 0.20.1, the Vala compiler
2 * generated from handle.vala, do not modify */
4 /* vim:set et sts=4 sw=4:
8 * Copyright(c) 2011 Peng Huang <shawn.p.huang@gmail.com>
10 * This library is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU Lesser General Public
12 * License as published by the Free Software Foundation; either
13 * version 2.1 of the License, or (at your option) any later version.
15 * This library is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 * Lesser General Public License for more details.
20 * You should have received a copy of the GNU Lesser General Public
21 * License along with this library; if not, write to the Free Software
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
27 #include <glib-object.h>
36 #define TYPE_HANDLE (handle_get_type ())
37 #define HANDLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_HANDLE, Handle))
38 #define HANDLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_HANDLE, HandleClass))
39 #define IS_HANDLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_HANDLE))
40 #define IS_HANDLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_HANDLE))
41 #define HANDLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_HANDLE, HandleClass))
43 typedef struct _Handle Handle;
44 typedef struct _HandleClass HandleClass;
45 typedef struct _HandlePrivate HandlePrivate;
46 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
49 GtkEventBox parent_instance;
54 GtkEventBoxClass parent_class;
57 struct _HandlePrivate {
58 gboolean m_move_begined;
59 GdkRectangle m_workarea;
64 static gpointer handle_parent_class = NULL;
66 GType handle_get_type (void) G_GNUC_CONST;
67 #define HANDLE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_HANDLE, HandlePrivate))
71 Handle* handle_new (void);
72 Handle* handle_construct (GType object_type);
73 static void handle_real_realize (GtkWidget* base);
74 static gboolean handle_real_button_press_event (GtkWidget* base, GdkEventButton* event);
75 static gboolean handle_real_button_release_event (GtkWidget* base, GdkEventButton* event);
76 static gboolean handle_real_motion_notify_event (GtkWidget* base, GdkEventMotion* event);
77 static gboolean handle_real_draw (GtkWidget* base, cairo_t* cr);
78 static void handle_finalize (GObject* obj);
81 Handle* handle_construct (GType object_type) {
84 self = (Handle*) g_object_new (object_type, NULL);
85 gtk_widget_set_size_request ((GtkWidget*) self, 6, -1);
86 mask = ((GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK) | GDK_BUTTON_RELEASE_MASK) | GDK_BUTTON1_MOTION_MASK;
87 gtk_widget_set_events ((GtkWidget*) self, (gint) mask);
88 self->priv->m_move_begined = FALSE;
93 Handle* handle_new (void) {
94 return handle_construct (TYPE_HANDLE);
98 static void handle_real_realize (GtkWidget* base) {
100 self = (Handle*) base;
101 GTK_WIDGET_CLASS (handle_parent_class)->realize ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, GTK_TYPE_EVENT_BOX, GtkEventBox));
105 static gpointer _g_object_ref0 (gpointer self) {
106 return self ? g_object_ref (self) : NULL;
110 static gboolean handle_real_button_press_event (GtkWidget* base, GdkEventButton* event) {
112 gboolean result = FALSE;
113 GdkEventButton _tmp0_;
117 GdkRectangle _tmp4_ = {0};
121 GtkWidget* _tmp115_ = NULL;
127 GdkEventButton _tmp120_;
130 GdkEventButton _tmp123_;
133 self = (Handle*) base;
134 g_return_val_if_fail (event != NULL, FALSE);
136 _tmp1_ = _tmp0_.button;
137 if (_tmp1_ != ((guint) 1)) {
143 memset (&_tmp4_, 0, sizeof (GdkRectangle));
146 _tmp4_.width = _tmp2_;
147 _tmp4_.height = _tmp3_;
148 self->priv->m_workarea = _tmp4_;
149 _tmp5_ = self->priv->m_workarea;
155 GdkWindow* _tmp8_ = NULL;
158 GdkAtom _tmp10_ = 0U;
160 GdkAtom _tmp11_ = 0U;
162 GdkAtom actual_type = 0U;
165 gint data_length1 = 0;
166 gint _data_size_ = 0;
167 gboolean _result_ = FALSE;
172 GdkAtom _tmp16_ = 0U;
174 guint8* _tmp18_ = NULL;
176 gboolean _tmp20_ = FALSE;
177 gboolean _tmp21_ = FALSE;
178 gboolean _tmp22_ = FALSE;
179 gboolean _tmp23_ = FALSE;
185 gint _tmp32__length1;
188 gint _tmp34__length1;
191 gint _tmp36__length1;
194 gint _tmp38__length1;
197 GdkAtom _tmp40_ = 0U;
198 GdkAtom _tmp41_ = 0U;
203 GdkAtom _tmp46_ = 0U;
205 guint8* _tmp48_ = NULL;
207 gboolean _tmp50_ = FALSE;
208 gboolean _tmp51_ = FALSE;
209 gboolean _tmp52_ = FALSE;
210 gboolean _tmp53_ = FALSE;
218 gint _tmp64__length1;
222 gint _tmp67__length1;
226 gint _tmp70__length1;
230 gint _tmp73__length1;
235 gint _tmp77__length1;
239 gint _tmp80__length1;
243 gint _tmp83__length1;
247 gint _tmp86__length1;
252 gint _tmp90__length1;
256 gint _tmp93__length1;
260 gint _tmp96__length1;
264 gint _tmp99__length1;
269 gint _tmp103__length1;
273 gint _tmp106__length1;
277 gint _tmp109__length1;
281 gint _tmp112__length1;
291 _tmp8_ = gdk_get_default_root_window ();
292 _tmp9_ = _g_object_ref0 (_tmp8_);
294 _tmp10_ = gdk_atom_intern ("_NET_CURRENT_DESKTOP", FALSE);
296 _tmp11_ = gdk_atom_intern ("CARDINAL", FALSE);
302 _tmp20_ = gdk_property_get (_tmp12_, _tmp13_, _tmp14_, (gulong) 0, (gulong) _tmp15_, 0, &_tmp16_, &_tmp17_, &_tmp19_, &_tmp18_);
303 actual_type = _tmp16_;
305 data = (g_free (data), NULL);
307 data_length1 = _tmp19_;
308 _data_size_ = data_length1;
316 _tmp25_ = actual_type;
318 _tmp23_ = _tmp25_ != _tmp26_;
326 _tmp22_ = _tmp28_ != 32;
333 gint _tmp30__length1;
335 _tmp30__length1 = data_length1;
336 _tmp21_ = _tmp30__length1 != 4;
340 data = (g_free (data), NULL);
341 _g_object_unref0 (root);
345 _tmp32__length1 = data_length1;
346 _tmp33_ = _tmp32_[0];
348 _tmp34__length1 = data_length1;
349 _tmp35_ = _tmp34_[1];
351 _tmp36__length1 = data_length1;
352 _tmp37_ = _tmp36_[2];
354 _tmp38__length1 = data_length1;
355 _tmp39_ = _tmp38_[3];
356 index = (gint) (((_tmp33_ | (_tmp35_ << 8)) | (_tmp37_ << 16)) | (_tmp39_ << 24));
357 _tmp40_ = gdk_atom_intern ("_NET_WORKAREA", FALSE);
359 _tmp41_ = gdk_atom_intern ("CARDINAL", FALSE);
365 _tmp50_ = gdk_property_get (_tmp42_, _tmp43_, _tmp44_, (gulong) 0, (gulong) _tmp45_, 0, &_tmp46_, &_tmp47_, &_tmp49_, &_tmp48_);
366 actual_type = _tmp46_;
368 data = (g_free (data), NULL);
370 data_length1 = _tmp49_;
371 _data_size_ = data_length1;
379 _tmp55_ = actual_type;
381 _tmp53_ = _tmp55_ != _tmp56_;
389 _tmp52_ = _tmp58_ != 32;
396 gint _tmp60__length1;
399 _tmp60__length1 = data_length1;
401 _tmp51_ = _tmp60__length1 < ((_tmp61_ + 1) * 16);
405 data = (g_free (data), NULL);
406 _g_object_unref0 (root);
410 i = (_tmp63_ * 4) * 4;
412 _tmp64__length1 = data_length1;
414 _tmp66_ = _tmp64_[_tmp65_];
416 _tmp67__length1 = data_length1;
418 _tmp69_ = _tmp67_[_tmp68_ + 1];
420 _tmp70__length1 = data_length1;
422 _tmp72_ = _tmp70_[_tmp71_ + 2];
424 _tmp73__length1 = data_length1;
426 _tmp75_ = _tmp73_[_tmp74_ + 3];
427 self->priv->m_workarea.x = (gint) (((_tmp66_ | (_tmp69_ << 8)) | (_tmp72_ << 16)) | (_tmp75_ << 24));
431 _tmp77__length1 = data_length1;
433 _tmp79_ = _tmp77_[_tmp78_];
435 _tmp80__length1 = data_length1;
437 _tmp82_ = _tmp80_[_tmp81_ + 1];
439 _tmp83__length1 = data_length1;
441 _tmp85_ = _tmp83_[_tmp84_ + 2];
443 _tmp86__length1 = data_length1;
445 _tmp88_ = _tmp86_[_tmp87_ + 3];
446 self->priv->m_workarea.y = (gint) (((_tmp79_ | (_tmp82_ << 8)) | (_tmp85_ << 16)) | (_tmp88_ << 24));
450 _tmp90__length1 = data_length1;
452 _tmp92_ = _tmp90_[_tmp91_];
454 _tmp93__length1 = data_length1;
456 _tmp95_ = _tmp93_[_tmp94_ + 1];
458 _tmp96__length1 = data_length1;
460 _tmp98_ = _tmp96_[_tmp97_ + 2];
462 _tmp99__length1 = data_length1;
464 _tmp101_ = _tmp99_[_tmp100_ + 3];
465 self->priv->m_workarea.width = (gint) (((_tmp92_ | (_tmp95_ << 8)) | (_tmp98_ << 16)) | (_tmp101_ << 24));
469 _tmp103__length1 = data_length1;
471 _tmp105_ = _tmp103_[_tmp104_];
473 _tmp106__length1 = data_length1;
475 _tmp108_ = _tmp106_[_tmp107_ + 1];
477 _tmp109__length1 = data_length1;
479 _tmp111_ = _tmp109_[_tmp110_ + 2];
481 _tmp112__length1 = data_length1;
483 _tmp114_ = _tmp112_[_tmp113_ + 3];
484 self->priv->m_workarea.height = (gint) (((_tmp105_ | (_tmp108_ << 8)) | (_tmp111_ << 16)) | (_tmp114_ << 24));
485 data = (g_free (data), NULL);
486 _g_object_unref0 (root);
489 self->priv->m_move_begined = TRUE;
490 _tmp115_ = gtk_widget_get_toplevel ((GtkWidget*) self);
491 _tmp116_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp115_, GTK_TYPE_WINDOW, GtkWindow));
494 gtk_window_get_position (_tmp117_, &_tmp118_, &_tmp119_);
498 _tmp121_ = _tmp120_.x_root;
500 self->priv->m_press_pos.x = ((gint) _tmp121_) - _tmp122_;
502 _tmp124_ = _tmp123_.y_root;
504 self->priv->m_press_pos.y = ((gint) _tmp124_) - _tmp125_;
505 g_signal_emit_by_name (self, "move-begin");
507 _g_object_unref0 (toplevel);
512 static gboolean handle_real_button_release_event (GtkWidget* base, GdkEventButton* event) {
514 gboolean result = FALSE;
515 GdkEventButton _tmp0_;
517 GdkWindow* _tmp2_ = NULL;
520 self = (Handle*) base;
521 g_return_val_if_fail (event != NULL, FALSE);
523 _tmp1_ = _tmp0_.button;
524 if (_tmp1_ != ((guint) 1)) {
528 self->priv->m_move_begined = FALSE;
529 self->priv->m_press_pos.x = 0;
530 self->priv->m_press_pos.y = 0;
531 _tmp2_ = gtk_widget_get_window ((GtkWidget*) self);
532 _tmp3_ = gdk_cursor_new (GDK_LEFT_PTR);
534 gdk_window_set_cursor (_tmp2_, _tmp4_);
535 _g_object_unref0 (_tmp4_);
536 g_signal_emit_by_name (self, "move-end");
542 static gboolean handle_real_motion_notify_event (GtkWidget* base, GdkEventMotion* event) {
544 gboolean result = FALSE;
546 GtkWidget* _tmp1_ = NULL;
549 GdkEventMotion _tmp3_;
554 GdkEventMotion _tmp7_;
559 gboolean _tmp11_ = FALSE;
561 GdkRectangle _tmp13_;
564 gboolean _tmp21_ = FALSE;
566 GdkRectangle _tmp23_;
574 gboolean _tmp34_ = FALSE;
577 GdkRectangle _tmp37_;
579 GdkRectangle _tmp39_;
582 gboolean _tmp53_ = FALSE;
585 GdkRectangle _tmp56_;
587 GdkRectangle _tmp58_;
593 self = (Handle*) base;
594 g_return_val_if_fail (event != NULL, FALSE);
595 _tmp0_ = self->priv->m_move_begined;
600 _tmp1_ = gtk_widget_get_toplevel ((GtkWidget*) self);
601 _tmp2_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GTK_TYPE_WINDOW, GtkWindow));
604 _tmp4_ = _tmp3_.x_root;
605 _tmp5_ = self->priv->m_press_pos;
607 x = (gint) (_tmp4_ - _tmp6_);
609 _tmp8_ = _tmp7_.y_root;
610 _tmp9_ = self->priv->m_press_pos;
612 y = (gint) (_tmp8_ - _tmp10_);
614 _tmp13_ = self->priv->m_workarea;
616 if (_tmp12_ < _tmp14_) {
618 GdkRectangle _tmp16_;
621 _tmp16_ = self->priv->m_workarea;
623 _tmp11_ = _tmp15_ > (_tmp17_ - 16);
629 GdkRectangle _tmp19_;
631 _tmp19_ = self->priv->m_workarea;
636 _tmp23_ = self->priv->m_workarea;
638 if (_tmp22_ < _tmp24_) {
640 GdkRectangle _tmp26_;
643 _tmp26_ = self->priv->m_workarea;
645 _tmp21_ = _tmp25_ > (_tmp27_ - 16);
651 GdkRectangle _tmp29_;
653 _tmp29_ = self->priv->m_workarea;
658 gtk_window_get_size (_tmp31_, &_tmp32_, &_tmp33_);
663 _tmp37_ = self->priv->m_workarea;
665 _tmp39_ = self->priv->m_workarea;
666 _tmp40_ = _tmp39_.width;
667 if ((_tmp35_ + _tmp36_) > (_tmp38_ + _tmp40_)) {
670 GdkRectangle _tmp43_;
672 GdkRectangle _tmp45_;
676 _tmp43_ = self->priv->m_workarea;
678 _tmp45_ = self->priv->m_workarea;
679 _tmp46_ = _tmp45_.width;
680 _tmp34_ = (_tmp41_ + _tmp42_) < ((_tmp44_ + _tmp46_) + 16);
686 GdkRectangle _tmp48_;
688 GdkRectangle _tmp50_;
691 _tmp48_ = self->priv->m_workarea;
693 _tmp50_ = self->priv->m_workarea;
694 _tmp51_ = _tmp50_.width;
696 x = (_tmp49_ + _tmp51_) - _tmp52_;
700 _tmp56_ = self->priv->m_workarea;
702 _tmp58_ = self->priv->m_workarea;
703 _tmp59_ = _tmp58_.height;
704 if ((_tmp54_ + _tmp55_) > (_tmp57_ + _tmp59_)) {
707 GdkRectangle _tmp62_;
709 GdkRectangle _tmp64_;
713 _tmp62_ = self->priv->m_workarea;
715 _tmp64_ = self->priv->m_workarea;
716 _tmp65_ = _tmp64_.height;
717 _tmp53_ = (_tmp60_ + _tmp61_) < ((_tmp63_ + _tmp65_) + 16);
723 GdkRectangle _tmp67_;
725 GdkRectangle _tmp69_;
728 _tmp67_ = self->priv->m_workarea;
730 _tmp69_ = self->priv->m_workarea;
731 _tmp70_ = _tmp69_.height;
733 y = (_tmp68_ + _tmp70_) - _tmp71_;
738 gtk_window_move (_tmp72_, _tmp73_, _tmp74_);
740 _g_object_unref0 (toplevel);
745 static gboolean handle_real_draw (GtkWidget* base, cairo_t* cr) {
747 gboolean result = FALSE;
749 GdkWindow* _tmp1_ = NULL;
750 gboolean _tmp2_ = FALSE;
751 self = (Handle*) base;
752 g_return_val_if_fail (cr != NULL, FALSE);
754 _tmp1_ = gtk_widget_get_window ((GtkWidget*) self);
755 _tmp2_ = gtk_cairo_should_draw_window (_tmp0_, _tmp1_);
757 GtkStyleContext* _tmp3_ = NULL;
758 GtkStyleContext* _tmp4_;
759 GtkStyleContext* context;
760 GtkAllocation allocation = {0};
761 GtkAllocation _tmp5_ = {0};
762 GtkStyleContext* _tmp6_;
764 GtkAllocation _tmp8_;
766 GtkAllocation _tmp10_;
768 GtkAllocation _tmp12_;
770 GtkAllocation _tmp14_;
772 _tmp3_ = gtk_widget_get_style_context ((GtkWidget*) self);
773 _tmp4_ = _g_object_ref0 (_tmp3_);
775 gtk_widget_get_allocation ((GtkWidget*) self, &_tmp5_);
781 _tmp10_ = allocation;
783 _tmp12_ = allocation;
784 _tmp13_ = _tmp12_.height;
785 _tmp14_ = allocation;
786 _tmp15_ = _tmp14_.width;
787 gtk_render_handle (_tmp6_, _tmp7_, (gdouble) _tmp9_, (gdouble) (_tmp11_ + ((_tmp13_ - 40) / 2)), (gdouble) _tmp15_, 40.0);
788 _g_object_unref0 (context);
795 static void handle_class_init (HandleClass * klass) {
796 handle_parent_class = g_type_class_peek_parent (klass);
797 g_type_class_add_private (klass, sizeof (HandlePrivate));
798 GTK_WIDGET_CLASS (klass)->realize = handle_real_realize;
799 GTK_WIDGET_CLASS (klass)->button_press_event = handle_real_button_press_event;
800 GTK_WIDGET_CLASS (klass)->button_release_event = handle_real_button_release_event;
801 GTK_WIDGET_CLASS (klass)->motion_notify_event = handle_real_motion_notify_event;
802 GTK_WIDGET_CLASS (klass)->draw = handle_real_draw;
803 G_OBJECT_CLASS (klass)->finalize = handle_finalize;
804 g_signal_new ("move_begin", TYPE_HANDLE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
805 g_signal_new ("move_end", TYPE_HANDLE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
809 static void handle_instance_init (Handle * self) {
810 self->priv = HANDLE_GET_PRIVATE (self);
814 static void handle_finalize (GObject* obj) {
816 self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_HANDLE, Handle);
817 G_OBJECT_CLASS (handle_parent_class)->finalize (obj);
821 GType handle_get_type (void) {
822 static volatile gsize handle_type_id__volatile = 0;
823 if (g_once_init_enter (&handle_type_id__volatile)) {
824 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 };
825 GType handle_type_id;
826 handle_type_id = g_type_register_static (GTK_TYPE_EVENT_BOX, "Handle", &g_define_type_info, 0);
827 g_once_init_leave (&handle_type_id__volatile, handle_type_id);
829 return handle_type_id__volatile;