Imported Upstream version 1.5.4
[platform/upstream/ibus.git] / ui / gtk3 / handle.c
1 /* handle.c generated by valac 0.20.1, the Vala compiler
2  * generated from handle.vala, do not modify */
3
4 /* vim:set et sts=4 sw=4:
5  *
6  * ibus - The Input Bus
7  *
8  * Copyright(c) 2011 Peng Huang <shawn.p.huang@gmail.com>
9  *
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.
14  *
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.
19  *
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
23  * USA
24  */
25
26 #include <glib.h>
27 #include <glib-object.h>
28 #include <gtk/gtk.h>
29 #include <gdk/gdk.h>
30 #include <string.h>
31 #include <cairo.h>
32 #include <float.h>
33 #include <math.h>
34
35
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))
42
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)))
47
48 struct _Handle {
49         GtkEventBox parent_instance;
50         HandlePrivate * priv;
51 };
52
53 struct _HandleClass {
54         GtkEventBoxClass parent_class;
55 };
56
57 struct _HandlePrivate {
58         gboolean m_move_begined;
59         GdkRectangle m_workarea;
60         GdkPoint m_press_pos;
61 };
62
63
64 static gpointer handle_parent_class = NULL;
65
66 GType handle_get_type (void) G_GNUC_CONST;
67 #define HANDLE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_HANDLE, HandlePrivate))
68 enum  {
69         HANDLE_DUMMY_PROPERTY
70 };
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);
79
80
81 Handle* handle_construct (GType object_type) {
82         Handle * self = NULL;
83         GdkEventMask mask;
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;
89         return self;
90 }
91
92
93 Handle* handle_new (void) {
94         return handle_construct (TYPE_HANDLE);
95 }
96
97
98 static void handle_real_realize (GtkWidget* base) {
99         Handle * self;
100         self = (Handle*) base;
101         GTK_WIDGET_CLASS (handle_parent_class)->realize ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, GTK_TYPE_EVENT_BOX, GtkEventBox));
102 }
103
104
105 static gpointer _g_object_ref0 (gpointer self) {
106         return self ? g_object_ref (self) : NULL;
107 }
108
109
110 static gboolean handle_real_button_press_event (GtkWidget* base, GdkEventButton* event) {
111         Handle * self;
112         gboolean result = FALSE;
113         GdkEventButton _tmp0_;
114         guint _tmp1_;
115         gint _tmp2_;
116         gint _tmp3_;
117         GdkRectangle _tmp4_ = {0};
118         GdkRectangle _tmp5_;
119         gint x = 0;
120         gint y = 0;
121         GtkWidget* _tmp115_ = NULL;
122         GtkWindow* _tmp116_;
123         GtkWindow* toplevel;
124         GtkWindow* _tmp117_;
125         gint _tmp118_ = 0;
126         gint _tmp119_ = 0;
127         GdkEventButton _tmp120_;
128         gdouble _tmp121_;
129         gint _tmp122_;
130         GdkEventButton _tmp123_;
131         gdouble _tmp124_;
132         gint _tmp125_;
133         self = (Handle*) base;
134         g_return_val_if_fail (event != NULL, FALSE);
135         _tmp0_ = *event;
136         _tmp1_ = _tmp0_.button;
137         if (_tmp1_ != ((guint) 1)) {
138                 result = FALSE;
139                 return result;
140         }
141         _tmp2_ = G_MAXINT;
142         _tmp3_ = G_MAXINT;
143         memset (&_tmp4_, 0, sizeof (GdkRectangle));
144         _tmp4_.x = 0;
145         _tmp4_.y = 0;
146         _tmp4_.width = _tmp2_;
147         _tmp4_.height = _tmp3_;
148         self->priv->m_workarea = _tmp4_;
149         _tmp5_ = self->priv->m_workarea;
150         {
151                 gboolean _tmp6_;
152                 _tmp6_ = TRUE;
153                 while (TRUE) {
154                         gboolean _tmp7_;
155                         GdkWindow* _tmp8_ = NULL;
156                         GdkWindow* _tmp9_;
157                         GdkWindow* root;
158                         GdkAtom _tmp10_ = 0U;
159                         GdkAtom property;
160                         GdkAtom _tmp11_ = 0U;
161                         GdkAtom type;
162                         GdkAtom actual_type = 0U;
163                         gint format = 0;
164                         guchar* data = NULL;
165                         gint data_length1 = 0;
166                         gint _data_size_ = 0;
167                         gboolean _result_ = FALSE;
168                         GdkWindow* _tmp12_;
169                         GdkAtom _tmp13_;
170                         GdkAtom _tmp14_;
171                         glong _tmp15_;
172                         GdkAtom _tmp16_ = 0U;
173                         gint _tmp17_ = 0;
174                         guint8* _tmp18_ = NULL;
175                         gint _tmp19_ = 0;
176                         gboolean _tmp20_ = FALSE;
177                         gboolean _tmp21_ = FALSE;
178                         gboolean _tmp22_ = FALSE;
179                         gboolean _tmp23_ = FALSE;
180                         gboolean _tmp24_;
181                         gboolean _tmp27_;
182                         gboolean _tmp29_;
183                         gboolean _tmp31_;
184                         guchar* _tmp32_;
185                         gint _tmp32__length1;
186                         guchar _tmp33_;
187                         guchar* _tmp34_;
188                         gint _tmp34__length1;
189                         guchar _tmp35_;
190                         guchar* _tmp36_;
191                         gint _tmp36__length1;
192                         guchar _tmp37_;
193                         guchar* _tmp38_;
194                         gint _tmp38__length1;
195                         guchar _tmp39_;
196                         gint index;
197                         GdkAtom _tmp40_ = 0U;
198                         GdkAtom _tmp41_ = 0U;
199                         GdkWindow* _tmp42_;
200                         GdkAtom _tmp43_;
201                         GdkAtom _tmp44_;
202                         glong _tmp45_;
203                         GdkAtom _tmp46_ = 0U;
204                         gint _tmp47_ = 0;
205                         guint8* _tmp48_ = NULL;
206                         gint _tmp49_ = 0;
207                         gboolean _tmp50_ = FALSE;
208                         gboolean _tmp51_ = FALSE;
209                         gboolean _tmp52_ = FALSE;
210                         gboolean _tmp53_ = FALSE;
211                         gboolean _tmp54_;
212                         gboolean _tmp57_;
213                         gboolean _tmp59_;
214                         gboolean _tmp62_;
215                         gint _tmp63_;
216                         gint i;
217                         guchar* _tmp64_;
218                         gint _tmp64__length1;
219                         gint _tmp65_;
220                         guchar _tmp66_;
221                         guchar* _tmp67_;
222                         gint _tmp67__length1;
223                         gint _tmp68_;
224                         guchar _tmp69_;
225                         guchar* _tmp70_;
226                         gint _tmp70__length1;
227                         gint _tmp71_;
228                         guchar _tmp72_;
229                         guchar* _tmp73_;
230                         gint _tmp73__length1;
231                         gint _tmp74_;
232                         guchar _tmp75_;
233                         gint _tmp76_;
234                         guchar* _tmp77_;
235                         gint _tmp77__length1;
236                         gint _tmp78_;
237                         guchar _tmp79_;
238                         guchar* _tmp80_;
239                         gint _tmp80__length1;
240                         gint _tmp81_;
241                         guchar _tmp82_;
242                         guchar* _tmp83_;
243                         gint _tmp83__length1;
244                         gint _tmp84_;
245                         guchar _tmp85_;
246                         guchar* _tmp86_;
247                         gint _tmp86__length1;
248                         gint _tmp87_;
249                         guchar _tmp88_;
250                         gint _tmp89_;
251                         guchar* _tmp90_;
252                         gint _tmp90__length1;
253                         gint _tmp91_;
254                         guchar _tmp92_;
255                         guchar* _tmp93_;
256                         gint _tmp93__length1;
257                         gint _tmp94_;
258                         guchar _tmp95_;
259                         guchar* _tmp96_;
260                         gint _tmp96__length1;
261                         gint _tmp97_;
262                         guchar _tmp98_;
263                         guchar* _tmp99_;
264                         gint _tmp99__length1;
265                         gint _tmp100_;
266                         guchar _tmp101_;
267                         gint _tmp102_;
268                         guchar* _tmp103_;
269                         gint _tmp103__length1;
270                         gint _tmp104_;
271                         guchar _tmp105_;
272                         guchar* _tmp106_;
273                         gint _tmp106__length1;
274                         gint _tmp107_;
275                         guchar _tmp108_;
276                         guchar* _tmp109_;
277                         gint _tmp109__length1;
278                         gint _tmp110_;
279                         guchar _tmp111_;
280                         guchar* _tmp112_;
281                         gint _tmp112__length1;
282                         gint _tmp113_;
283                         guchar _tmp114_;
284                         _tmp7_ = _tmp6_;
285                         if (!_tmp7_) {
286                                 if (!FALSE) {
287                                         break;
288                                 }
289                         }
290                         _tmp6_ = FALSE;
291                         _tmp8_ = gdk_get_default_root_window ();
292                         _tmp9_ = _g_object_ref0 (_tmp8_);
293                         root = _tmp9_;
294                         _tmp10_ = gdk_atom_intern ("_NET_CURRENT_DESKTOP", FALSE);
295                         property = _tmp10_;
296                         _tmp11_ = gdk_atom_intern ("CARDINAL", FALSE);
297                         type = _tmp11_;
298                         _tmp12_ = root;
299                         _tmp13_ = property;
300                         _tmp14_ = type;
301                         _tmp15_ = G_MAXLONG;
302                         _tmp20_ = gdk_property_get (_tmp12_, _tmp13_, _tmp14_, (gulong) 0, (gulong) _tmp15_, 0, &_tmp16_, &_tmp17_, &_tmp19_, &_tmp18_);
303                         actual_type = _tmp16_;
304                         format = _tmp17_;
305                         data = (g_free (data), NULL);
306                         data = _tmp18_;
307                         data_length1 = _tmp19_;
308                         _data_size_ = data_length1;
309                         _result_ = _tmp20_;
310                         _tmp24_ = _result_;
311                         if (!_tmp24_) {
312                                 _tmp23_ = TRUE;
313                         } else {
314                                 GdkAtom _tmp25_;
315                                 GdkAtom _tmp26_;
316                                 _tmp25_ = actual_type;
317                                 _tmp26_ = type;
318                                 _tmp23_ = _tmp25_ != _tmp26_;
319                         }
320                         _tmp27_ = _tmp23_;
321                         if (_tmp27_) {
322                                 _tmp22_ = TRUE;
323                         } else {
324                                 gint _tmp28_;
325                                 _tmp28_ = format;
326                                 _tmp22_ = _tmp28_ != 32;
327                         }
328                         _tmp29_ = _tmp22_;
329                         if (_tmp29_) {
330                                 _tmp21_ = TRUE;
331                         } else {
332                                 guchar* _tmp30_;
333                                 gint _tmp30__length1;
334                                 _tmp30_ = data;
335                                 _tmp30__length1 = data_length1;
336                                 _tmp21_ = _tmp30__length1 != 4;
337                         }
338                         _tmp31_ = _tmp21_;
339                         if (_tmp31_) {
340                                 data = (g_free (data), NULL);
341                                 _g_object_unref0 (root);
342                                 break;
343                         }
344                         _tmp32_ = data;
345                         _tmp32__length1 = data_length1;
346                         _tmp33_ = _tmp32_[0];
347                         _tmp34_ = data;
348                         _tmp34__length1 = data_length1;
349                         _tmp35_ = _tmp34_[1];
350                         _tmp36_ = data;
351                         _tmp36__length1 = data_length1;
352                         _tmp37_ = _tmp36_[2];
353                         _tmp38_ = data;
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);
358                         property = _tmp40_;
359                         _tmp41_ = gdk_atom_intern ("CARDINAL", FALSE);
360                         type = _tmp41_;
361                         _tmp42_ = root;
362                         _tmp43_ = property;
363                         _tmp44_ = type;
364                         _tmp45_ = G_MAXLONG;
365                         _tmp50_ = gdk_property_get (_tmp42_, _tmp43_, _tmp44_, (gulong) 0, (gulong) _tmp45_, 0, &_tmp46_, &_tmp47_, &_tmp49_, &_tmp48_);
366                         actual_type = _tmp46_;
367                         format = _tmp47_;
368                         data = (g_free (data), NULL);
369                         data = _tmp48_;
370                         data_length1 = _tmp49_;
371                         _data_size_ = data_length1;
372                         _result_ = _tmp50_;
373                         _tmp54_ = _result_;
374                         if (!_tmp54_) {
375                                 _tmp53_ = TRUE;
376                         } else {
377                                 GdkAtom _tmp55_;
378                                 GdkAtom _tmp56_;
379                                 _tmp55_ = actual_type;
380                                 _tmp56_ = type;
381                                 _tmp53_ = _tmp55_ != _tmp56_;
382                         }
383                         _tmp57_ = _tmp53_;
384                         if (_tmp57_) {
385                                 _tmp52_ = TRUE;
386                         } else {
387                                 gint _tmp58_;
388                                 _tmp58_ = format;
389                                 _tmp52_ = _tmp58_ != 32;
390                         }
391                         _tmp59_ = _tmp52_;
392                         if (_tmp59_) {
393                                 _tmp51_ = TRUE;
394                         } else {
395                                 guchar* _tmp60_;
396                                 gint _tmp60__length1;
397                                 gint _tmp61_;
398                                 _tmp60_ = data;
399                                 _tmp60__length1 = data_length1;
400                                 _tmp61_ = index;
401                                 _tmp51_ = _tmp60__length1 < ((_tmp61_ + 1) * 16);
402                         }
403                         _tmp62_ = _tmp51_;
404                         if (_tmp62_) {
405                                 data = (g_free (data), NULL);
406                                 _g_object_unref0 (root);
407                                 break;
408                         }
409                         _tmp63_ = index;
410                         i = (_tmp63_ * 4) * 4;
411                         _tmp64_ = data;
412                         _tmp64__length1 = data_length1;
413                         _tmp65_ = i;
414                         _tmp66_ = _tmp64_[_tmp65_];
415                         _tmp67_ = data;
416                         _tmp67__length1 = data_length1;
417                         _tmp68_ = i;
418                         _tmp69_ = _tmp67_[_tmp68_ + 1];
419                         _tmp70_ = data;
420                         _tmp70__length1 = data_length1;
421                         _tmp71_ = i;
422                         _tmp72_ = _tmp70_[_tmp71_ + 2];
423                         _tmp73_ = data;
424                         _tmp73__length1 = data_length1;
425                         _tmp74_ = i;
426                         _tmp75_ = _tmp73_[_tmp74_ + 3];
427                         self->priv->m_workarea.x = (gint) (((_tmp66_ | (_tmp69_ << 8)) | (_tmp72_ << 16)) | (_tmp75_ << 24));
428                         _tmp76_ = i;
429                         i = _tmp76_ + 4;
430                         _tmp77_ = data;
431                         _tmp77__length1 = data_length1;
432                         _tmp78_ = i;
433                         _tmp79_ = _tmp77_[_tmp78_];
434                         _tmp80_ = data;
435                         _tmp80__length1 = data_length1;
436                         _tmp81_ = i;
437                         _tmp82_ = _tmp80_[_tmp81_ + 1];
438                         _tmp83_ = data;
439                         _tmp83__length1 = data_length1;
440                         _tmp84_ = i;
441                         _tmp85_ = _tmp83_[_tmp84_ + 2];
442                         _tmp86_ = data;
443                         _tmp86__length1 = data_length1;
444                         _tmp87_ = i;
445                         _tmp88_ = _tmp86_[_tmp87_ + 3];
446                         self->priv->m_workarea.y = (gint) (((_tmp79_ | (_tmp82_ << 8)) | (_tmp85_ << 16)) | (_tmp88_ << 24));
447                         _tmp89_ = i;
448                         i = _tmp89_ + 4;
449                         _tmp90_ = data;
450                         _tmp90__length1 = data_length1;
451                         _tmp91_ = i;
452                         _tmp92_ = _tmp90_[_tmp91_];
453                         _tmp93_ = data;
454                         _tmp93__length1 = data_length1;
455                         _tmp94_ = i;
456                         _tmp95_ = _tmp93_[_tmp94_ + 1];
457                         _tmp96_ = data;
458                         _tmp96__length1 = data_length1;
459                         _tmp97_ = i;
460                         _tmp98_ = _tmp96_[_tmp97_ + 2];
461                         _tmp99_ = data;
462                         _tmp99__length1 = data_length1;
463                         _tmp100_ = i;
464                         _tmp101_ = _tmp99_[_tmp100_ + 3];
465                         self->priv->m_workarea.width = (gint) (((_tmp92_ | (_tmp95_ << 8)) | (_tmp98_ << 16)) | (_tmp101_ << 24));
466                         _tmp102_ = i;
467                         i = _tmp102_ + 4;
468                         _tmp103_ = data;
469                         _tmp103__length1 = data_length1;
470                         _tmp104_ = i;
471                         _tmp105_ = _tmp103_[_tmp104_];
472                         _tmp106_ = data;
473                         _tmp106__length1 = data_length1;
474                         _tmp107_ = i;
475                         _tmp108_ = _tmp106_[_tmp107_ + 1];
476                         _tmp109_ = data;
477                         _tmp109__length1 = data_length1;
478                         _tmp110_ = i;
479                         _tmp111_ = _tmp109_[_tmp110_ + 2];
480                         _tmp112_ = data;
481                         _tmp112__length1 = data_length1;
482                         _tmp113_ = i;
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);
487                 }
488         }
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));
492         toplevel = _tmp116_;
493         _tmp117_ = toplevel;
494         gtk_window_get_position (_tmp117_, &_tmp118_, &_tmp119_);
495         x = _tmp118_;
496         y = _tmp119_;
497         _tmp120_ = *event;
498         _tmp121_ = _tmp120_.x_root;
499         _tmp122_ = x;
500         self->priv->m_press_pos.x = ((gint) _tmp121_) - _tmp122_;
501         _tmp123_ = *event;
502         _tmp124_ = _tmp123_.y_root;
503         _tmp125_ = y;
504         self->priv->m_press_pos.y = ((gint) _tmp124_) - _tmp125_;
505         g_signal_emit_by_name (self, "move-begin");
506         result = TRUE;
507         _g_object_unref0 (toplevel);
508         return result;
509 }
510
511
512 static gboolean handle_real_button_release_event (GtkWidget* base, GdkEventButton* event) {
513         Handle * self;
514         gboolean result = FALSE;
515         GdkEventButton _tmp0_;
516         guint _tmp1_;
517         GdkWindow* _tmp2_ = NULL;
518         GdkCursor* _tmp3_;
519         GdkCursor* _tmp4_;
520         self = (Handle*) base;
521         g_return_val_if_fail (event != NULL, FALSE);
522         _tmp0_ = *event;
523         _tmp1_ = _tmp0_.button;
524         if (_tmp1_ != ((guint) 1)) {
525                 result = FALSE;
526                 return result;
527         }
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);
533         _tmp4_ = _tmp3_;
534         gdk_window_set_cursor (_tmp2_, _tmp4_);
535         _g_object_unref0 (_tmp4_);
536         g_signal_emit_by_name (self, "move-end");
537         result = TRUE;
538         return result;
539 }
540
541
542 static gboolean handle_real_motion_notify_event (GtkWidget* base, GdkEventMotion* event) {
543         Handle * self;
544         gboolean result = FALSE;
545         gboolean _tmp0_;
546         GtkWidget* _tmp1_ = NULL;
547         GtkWindow* _tmp2_;
548         GtkWindow* toplevel;
549         GdkEventMotion _tmp3_;
550         gdouble _tmp4_;
551         GdkPoint _tmp5_;
552         gint _tmp6_;
553         gint x;
554         GdkEventMotion _tmp7_;
555         gdouble _tmp8_;
556         GdkPoint _tmp9_;
557         gint _tmp10_;
558         gint y;
559         gboolean _tmp11_ = FALSE;
560         gint _tmp12_;
561         GdkRectangle _tmp13_;
562         gint _tmp14_;
563         gboolean _tmp18_;
564         gboolean _tmp21_ = FALSE;
565         gint _tmp22_;
566         GdkRectangle _tmp23_;
567         gint _tmp24_;
568         gboolean _tmp28_;
569         gint w = 0;
570         gint h = 0;
571         GtkWindow* _tmp31_;
572         gint _tmp32_ = 0;
573         gint _tmp33_ = 0;
574         gboolean _tmp34_ = FALSE;
575         gint _tmp35_;
576         gint _tmp36_;
577         GdkRectangle _tmp37_;
578         gint _tmp38_;
579         GdkRectangle _tmp39_;
580         gint _tmp40_;
581         gboolean _tmp47_;
582         gboolean _tmp53_ = FALSE;
583         gint _tmp54_;
584         gint _tmp55_;
585         GdkRectangle _tmp56_;
586         gint _tmp57_;
587         GdkRectangle _tmp58_;
588         gint _tmp59_;
589         gboolean _tmp66_;
590         GtkWindow* _tmp72_;
591         gint _tmp73_;
592         gint _tmp74_;
593         self = (Handle*) base;
594         g_return_val_if_fail (event != NULL, FALSE);
595         _tmp0_ = self->priv->m_move_begined;
596         if (!_tmp0_) {
597                 result = FALSE;
598                 return result;
599         }
600         _tmp1_ = gtk_widget_get_toplevel ((GtkWidget*) self);
601         _tmp2_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GTK_TYPE_WINDOW, GtkWindow));
602         toplevel = _tmp2_;
603         _tmp3_ = *event;
604         _tmp4_ = _tmp3_.x_root;
605         _tmp5_ = self->priv->m_press_pos;
606         _tmp6_ = _tmp5_.x;
607         x = (gint) (_tmp4_ - _tmp6_);
608         _tmp7_ = *event;
609         _tmp8_ = _tmp7_.y_root;
610         _tmp9_ = self->priv->m_press_pos;
611         _tmp10_ = _tmp9_.y;
612         y = (gint) (_tmp8_ - _tmp10_);
613         _tmp12_ = x;
614         _tmp13_ = self->priv->m_workarea;
615         _tmp14_ = _tmp13_.x;
616         if (_tmp12_ < _tmp14_) {
617                 gint _tmp15_;
618                 GdkRectangle _tmp16_;
619                 gint _tmp17_;
620                 _tmp15_ = x;
621                 _tmp16_ = self->priv->m_workarea;
622                 _tmp17_ = _tmp16_.x;
623                 _tmp11_ = _tmp15_ > (_tmp17_ - 16);
624         } else {
625                 _tmp11_ = FALSE;
626         }
627         _tmp18_ = _tmp11_;
628         if (_tmp18_) {
629                 GdkRectangle _tmp19_;
630                 gint _tmp20_;
631                 _tmp19_ = self->priv->m_workarea;
632                 _tmp20_ = _tmp19_.x;
633                 x = _tmp20_;
634         }
635         _tmp22_ = y;
636         _tmp23_ = self->priv->m_workarea;
637         _tmp24_ = _tmp23_.y;
638         if (_tmp22_ < _tmp24_) {
639                 gint _tmp25_;
640                 GdkRectangle _tmp26_;
641                 gint _tmp27_;
642                 _tmp25_ = y;
643                 _tmp26_ = self->priv->m_workarea;
644                 _tmp27_ = _tmp26_.y;
645                 _tmp21_ = _tmp25_ > (_tmp27_ - 16);
646         } else {
647                 _tmp21_ = FALSE;
648         }
649         _tmp28_ = _tmp21_;
650         if (_tmp28_) {
651                 GdkRectangle _tmp29_;
652                 gint _tmp30_;
653                 _tmp29_ = self->priv->m_workarea;
654                 _tmp30_ = _tmp29_.y;
655                 y = _tmp30_;
656         }
657         _tmp31_ = toplevel;
658         gtk_window_get_size (_tmp31_, &_tmp32_, &_tmp33_);
659         w = _tmp32_;
660         h = _tmp33_;
661         _tmp35_ = x;
662         _tmp36_ = w;
663         _tmp37_ = self->priv->m_workarea;
664         _tmp38_ = _tmp37_.x;
665         _tmp39_ = self->priv->m_workarea;
666         _tmp40_ = _tmp39_.width;
667         if ((_tmp35_ + _tmp36_) > (_tmp38_ + _tmp40_)) {
668                 gint _tmp41_;
669                 gint _tmp42_;
670                 GdkRectangle _tmp43_;
671                 gint _tmp44_;
672                 GdkRectangle _tmp45_;
673                 gint _tmp46_;
674                 _tmp41_ = x;
675                 _tmp42_ = w;
676                 _tmp43_ = self->priv->m_workarea;
677                 _tmp44_ = _tmp43_.x;
678                 _tmp45_ = self->priv->m_workarea;
679                 _tmp46_ = _tmp45_.width;
680                 _tmp34_ = (_tmp41_ + _tmp42_) < ((_tmp44_ + _tmp46_) + 16);
681         } else {
682                 _tmp34_ = FALSE;
683         }
684         _tmp47_ = _tmp34_;
685         if (_tmp47_) {
686                 GdkRectangle _tmp48_;
687                 gint _tmp49_;
688                 GdkRectangle _tmp50_;
689                 gint _tmp51_;
690                 gint _tmp52_;
691                 _tmp48_ = self->priv->m_workarea;
692                 _tmp49_ = _tmp48_.x;
693                 _tmp50_ = self->priv->m_workarea;
694                 _tmp51_ = _tmp50_.width;
695                 _tmp52_ = w;
696                 x = (_tmp49_ + _tmp51_) - _tmp52_;
697         }
698         _tmp54_ = y;
699         _tmp55_ = h;
700         _tmp56_ = self->priv->m_workarea;
701         _tmp57_ = _tmp56_.y;
702         _tmp58_ = self->priv->m_workarea;
703         _tmp59_ = _tmp58_.height;
704         if ((_tmp54_ + _tmp55_) > (_tmp57_ + _tmp59_)) {
705                 gint _tmp60_;
706                 gint _tmp61_;
707                 GdkRectangle _tmp62_;
708                 gint _tmp63_;
709                 GdkRectangle _tmp64_;
710                 gint _tmp65_;
711                 _tmp60_ = y;
712                 _tmp61_ = h;
713                 _tmp62_ = self->priv->m_workarea;
714                 _tmp63_ = _tmp62_.y;
715                 _tmp64_ = self->priv->m_workarea;
716                 _tmp65_ = _tmp64_.height;
717                 _tmp53_ = (_tmp60_ + _tmp61_) < ((_tmp63_ + _tmp65_) + 16);
718         } else {
719                 _tmp53_ = FALSE;
720         }
721         _tmp66_ = _tmp53_;
722         if (_tmp66_) {
723                 GdkRectangle _tmp67_;
724                 gint _tmp68_;
725                 GdkRectangle _tmp69_;
726                 gint _tmp70_;
727                 gint _tmp71_;
728                 _tmp67_ = self->priv->m_workarea;
729                 _tmp68_ = _tmp67_.y;
730                 _tmp69_ = self->priv->m_workarea;
731                 _tmp70_ = _tmp69_.height;
732                 _tmp71_ = w;
733                 y = (_tmp68_ + _tmp70_) - _tmp71_;
734         }
735         _tmp72_ = toplevel;
736         _tmp73_ = x;
737         _tmp74_ = y;
738         gtk_window_move (_tmp72_, _tmp73_, _tmp74_);
739         result = TRUE;
740         _g_object_unref0 (toplevel);
741         return result;
742 }
743
744
745 static gboolean handle_real_draw (GtkWidget* base, cairo_t* cr) {
746         Handle * self;
747         gboolean result = FALSE;
748         cairo_t* _tmp0_;
749         GdkWindow* _tmp1_ = NULL;
750         gboolean _tmp2_ = FALSE;
751         self = (Handle*) base;
752         g_return_val_if_fail (cr != NULL, FALSE);
753         _tmp0_ = cr;
754         _tmp1_ = gtk_widget_get_window ((GtkWidget*) self);
755         _tmp2_ = gtk_cairo_should_draw_window (_tmp0_, _tmp1_);
756         if (_tmp2_) {
757                 GtkStyleContext* _tmp3_ = NULL;
758                 GtkStyleContext* _tmp4_;
759                 GtkStyleContext* context;
760                 GtkAllocation allocation = {0};
761                 GtkAllocation _tmp5_ = {0};
762                 GtkStyleContext* _tmp6_;
763                 cairo_t* _tmp7_;
764                 GtkAllocation _tmp8_;
765                 gint _tmp9_;
766                 GtkAllocation _tmp10_;
767                 gint _tmp11_;
768                 GtkAllocation _tmp12_;
769                 gint _tmp13_;
770                 GtkAllocation _tmp14_;
771                 gint _tmp15_;
772                 _tmp3_ = gtk_widget_get_style_context ((GtkWidget*) self);
773                 _tmp4_ = _g_object_ref0 (_tmp3_);
774                 context = _tmp4_;
775                 gtk_widget_get_allocation ((GtkWidget*) self, &_tmp5_);
776                 allocation = _tmp5_;
777                 _tmp6_ = context;
778                 _tmp7_ = cr;
779                 _tmp8_ = allocation;
780                 _tmp9_ = _tmp8_.x;
781                 _tmp10_ = allocation;
782                 _tmp11_ = _tmp10_.y;
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);
789         }
790         result = FALSE;
791         return result;
792 }
793
794
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);
806 }
807
808
809 static void handle_instance_init (Handle * self) {
810         self->priv = HANDLE_GET_PRIVATE (self);
811 }
812
813
814 static void handle_finalize (GObject* obj) {
815         Handle * self;
816         self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_HANDLE, Handle);
817         G_OBJECT_CLASS (handle_parent_class)->finalize (obj);
818 }
819
820
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);
828         }
829         return handle_type_id__volatile;
830 }
831
832
833