Commit c82892da7897ed9e40b93da54868116da6674811

Authored by perry.werneck@gmail.com
1 parent 3b6d0324

Iniciando reimplementação de seleção

@@ -105,6 +105,9 @@ @@ -105,6 +105,9 @@
105 <Unit filename="src/gtk/v3270/keyboard.c"> 105 <Unit filename="src/gtk/v3270/keyboard.c">
106 <Option compilerVar="CC" /> 106 <Option compilerVar="CC" />
107 </Unit> 107 </Unit>
  108 + <Unit filename="src/gtk/v3270/mouse.c">
  109 + <Option compilerVar="CC" />
  110 + </Unit>
108 <Unit filename="src/gtk/v3270/oia.c"> 111 <Unit filename="src/gtk/v3270/oia.c">
109 <Option compilerVar="CC" /> 112 <Option compilerVar="CC" />
110 </Unit> 113 </Unit>
src/gtk/v3270/mouse.c
@@ -35,12 +35,12 @@ @@ -35,12 +35,12 @@
35 35
36 /*--[ Implement ]------------------------------------------------------------------------------------*/ 36 /*--[ Implement ]------------------------------------------------------------------------------------*/
37 37
38 -static int decode_position(v3270 *widget, GdkPoint *point, GdkEventButton *event) 38 +static int decode_position(v3270 *widget, GdkPoint *point, gdouble x, gdouble y)
39 { 39 {
40 int r,c; 40 int r,c;
41 41
42 - point->x = ((event->x-widget->metrics.left)/widget->metrics.width);  
43 - point->y = ((event->y-widget->metrics.top)/widget->metrics.spacing); 42 + point->x = ((x-widget->metrics.left)/widget->metrics.width);
  43 + point->y = ((y-widget->metrics.top)/widget->metrics.spacing);
44 44
45 lib3270_get_screen_size(widget->host,&r,&c); 45 lib3270_get_screen_size(widget->host,&r,&c);
46 46
@@ -53,7 +53,7 @@ static int decode_position(v3270 *widget, GdkPoint *point, GdkEventButton *event @@ -53,7 +53,7 @@ static int decode_position(v3270 *widget, GdkPoint *point, GdkEventButton *event
53 gboolean v3270_button_press_event(GtkWidget *widget, GdkEventButton *event) 53 gboolean v3270_button_press_event(GtkWidget *widget, GdkEventButton *event)
54 { 54 {
55 GdkPoint point; 55 GdkPoint point;
56 - int baddr = decode_position(GTK_V3270(widget),&point,event); 56 + int baddr = decode_position(GTK_V3270(widget),&point,event->x,event->y);
57 57
58 if(baddr < 0) 58 if(baddr < 0)
59 return FALSE; 59 return FALSE;
@@ -80,3 +80,12 @@ gboolean v3270_button_release_event(GtkWidget *widget, GdkEventButton*event) @@ -80,3 +80,12 @@ gboolean v3270_button_release_event(GtkWidget *widget, GdkEventButton*event)
80 80
81 return FALSE; 81 return FALSE;
82 } 82 }
  83 +
  84 +
  85 +gboolean v3270_motion_notify_event(GtkWidget *widget, GdkEventMotion *event)
  86 +{
  87 +// trace("%s",__FUNCTION__);
  88 +
  89 +
  90 + return FALSE;
  91 +}
src/gtk/v3270/private.h
@@ -82,6 +82,8 @@ G_BEGIN_DECLS @@ -82,6 +82,8 @@ G_BEGIN_DECLS
82 82
83 /*--[ Prototipes ]-----------------------------------------------------------------------------------*/ 83 /*--[ Prototipes ]-----------------------------------------------------------------------------------*/
84 84
  85 +const GtkWidgetClass * v3270_get_parent_class(void);
  86 +
85 gboolean v3270_draw(GtkWidget * widget, cairo_t * cr); 87 gboolean v3270_draw(GtkWidget * widget, cairo_t * cr);
86 void v3270_draw_oia(cairo_t *cr, H3270 *host, int row, int cols, struct v3270_metrics *metrics, GdkColor *color, GdkRectangle *rect); 88 void v3270_draw_oia(cairo_t *cr, H3270 *host, int row, int cols, struct v3270_metrics *metrics, GdkColor *color, GdkRectangle *rect);
87 89
@@ -123,5 +125,6 @@ gboolean v3270_key_release_event(GtkWidget *widget, GdkEventKey *event); @@ -123,5 +125,6 @@ gboolean v3270_key_release_event(GtkWidget *widget, GdkEventKey *event);
123 void v3270_key_commit(GtkIMContext *imcontext, gchar *str, v3270 *widget); 125 void v3270_key_commit(GtkIMContext *imcontext, gchar *str, v3270 *widget);
124 gboolean v3270_button_press_event(GtkWidget *widget, GdkEventButton *event); 126 gboolean v3270_button_press_event(GtkWidget *widget, GdkEventButton *event);
125 gboolean v3270_button_release_event(GtkWidget *widget, GdkEventButton*event); 127 gboolean v3270_button_release_event(GtkWidget *widget, GdkEventButton*event);
  128 +gboolean v3270_motion_notify_event(GtkWidget *widget, GdkEventMotion *event);
126 129
127 G_END_DECLS 130 G_END_DECLS
src/gtk/v3270/widget.c
@@ -42,13 +42,6 @@ @@ -42,13 +42,6 @@
42 #define CONTENTS_WIDTH(terminal) (cols * terminal->metrics.width) 42 #define CONTENTS_WIDTH(terminal) (cols * terminal->metrics.width)
43 #define CONTENTS_HEIGHT(terminal) (((rows+1) * terminal->metrics.spacing)+OIA_TOP_MARGIN+2) 43 #define CONTENTS_HEIGHT(terminal) (((rows+1) * terminal->metrics.spacing)+OIA_TOP_MARGIN+2)
44 44
45 -  
46 -/*  
47 - * http://gnomejournal.org/article/34/writing-a-widget-using-cairo-and-gtk28  
48 - * http://developer.gnome.org/gtk3/3.3/ch25s02.html  
49 - * http://zetcode.com/tutorials/cairographicstutorial/cairotext  
50 - */  
51 -  
52 /*--[ Widget definition ]----------------------------------------------------------------------------*/ 45 /*--[ Widget definition ]----------------------------------------------------------------------------*/
53 46
54 G_DEFINE_TYPE(v3270, v3270, GTK_TYPE_WIDGET); 47 G_DEFINE_TYPE(v3270, v3270, GTK_TYPE_WIDGET);
@@ -128,6 +121,7 @@ static void v3270_class_init(v3270Class *klass) @@ -128,6 +121,7 @@ static void v3270_class_init(v3270Class *klass)
128 widget_class->focus_out_event = v3270_focus_out_event; 121 widget_class->focus_out_event = v3270_focus_out_event;
129 widget_class->button_press_event = v3270_button_press_event; 122 widget_class->button_press_event = v3270_button_press_event;
130 widget_class->button_release_event = v3270_button_release_event; 123 widget_class->button_release_event = v3270_button_release_event;
  124 + widget_class->motion_notify_event = v3270_motion_notify_event;
131 125
132 klass->activate = v3270_activate; 126 klass->activate = v3270_activate;
133 klass->toggle_changed = v3270_toggle_changed; 127 klass->toggle_changed = v3270_toggle_changed;
@@ -854,3 +848,8 @@ static void v3270_activate(GtkWidget *widget) @@ -854,3 +848,8 @@ static void v3270_activate(GtkWidget *widget)
854 else 848 else
855 v3270_connect(widget,NULL); 849 v3270_connect(widget,NULL);
856 } 850 }
  851 +
  852 +const GtkWidgetClass * v3270_get_parent_class(void)
  853 +{
  854 + return GTK_WIDGET_CLASS(v3270_parent_class);
  855 +}