From c82892da7897ed9e40b93da54868116da6674811 Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Wed, 7 Mar 2012 20:28:39 +0000 Subject: [PATCH] Iniciando reimplementação de seleção --- pw3270.cbp | 3 +++ src/gtk/v3270/mouse.c | 17 +++++++++++++---- src/gtk/v3270/private.h | 3 +++ src/gtk/v3270/widget.c | 13 ++++++------- 4 files changed, 25 insertions(+), 11 deletions(-) diff --git a/pw3270.cbp b/pw3270.cbp index 6708331..8892889 100644 --- a/pw3270.cbp +++ b/pw3270.cbp @@ -105,6 +105,9 @@ + + diff --git a/src/gtk/v3270/mouse.c b/src/gtk/v3270/mouse.c index 0a9c09a..861743c 100644 --- a/src/gtk/v3270/mouse.c +++ b/src/gtk/v3270/mouse.c @@ -35,12 +35,12 @@ /*--[ Implement ]------------------------------------------------------------------------------------*/ -static int decode_position(v3270 *widget, GdkPoint *point, GdkEventButton *event) +static int decode_position(v3270 *widget, GdkPoint *point, gdouble x, gdouble y) { int r,c; - point->x = ((event->x-widget->metrics.left)/widget->metrics.width); - point->y = ((event->y-widget->metrics.top)/widget->metrics.spacing); + point->x = ((x-widget->metrics.left)/widget->metrics.width); + point->y = ((y-widget->metrics.top)/widget->metrics.spacing); lib3270_get_screen_size(widget->host,&r,&c); @@ -53,7 +53,7 @@ static int decode_position(v3270 *widget, GdkPoint *point, GdkEventButton *event gboolean v3270_button_press_event(GtkWidget *widget, GdkEventButton *event) { GdkPoint point; - int baddr = decode_position(GTK_V3270(widget),&point,event); + int baddr = decode_position(GTK_V3270(widget),&point,event->x,event->y); if(baddr < 0) return FALSE; @@ -80,3 +80,12 @@ gboolean v3270_button_release_event(GtkWidget *widget, GdkEventButton*event) return FALSE; } + + +gboolean v3270_motion_notify_event(GtkWidget *widget, GdkEventMotion *event) +{ +// trace("%s",__FUNCTION__); + + + return FALSE; +} diff --git a/src/gtk/v3270/private.h b/src/gtk/v3270/private.h index 268af2c..2722add 100644 --- a/src/gtk/v3270/private.h +++ b/src/gtk/v3270/private.h @@ -82,6 +82,8 @@ G_BEGIN_DECLS /*--[ Prototipes ]-----------------------------------------------------------------------------------*/ +const GtkWidgetClass * v3270_get_parent_class(void); + gboolean v3270_draw(GtkWidget * widget, cairo_t * cr); void v3270_draw_oia(cairo_t *cr, H3270 *host, int row, int cols, struct v3270_metrics *metrics, GdkColor *color, GdkRectangle *rect); @@ -123,5 +125,6 @@ gboolean v3270_key_release_event(GtkWidget *widget, GdkEventKey *event); void v3270_key_commit(GtkIMContext *imcontext, gchar *str, v3270 *widget); gboolean v3270_button_press_event(GtkWidget *widget, GdkEventButton *event); gboolean v3270_button_release_event(GtkWidget *widget, GdkEventButton*event); +gboolean v3270_motion_notify_event(GtkWidget *widget, GdkEventMotion *event); G_END_DECLS diff --git a/src/gtk/v3270/widget.c b/src/gtk/v3270/widget.c index 473aa33..c07fecb 100644 --- a/src/gtk/v3270/widget.c +++ b/src/gtk/v3270/widget.c @@ -42,13 +42,6 @@ #define CONTENTS_WIDTH(terminal) (cols * terminal->metrics.width) #define CONTENTS_HEIGHT(terminal) (((rows+1) * terminal->metrics.spacing)+OIA_TOP_MARGIN+2) - -/* - * http://gnomejournal.org/article/34/writing-a-widget-using-cairo-and-gtk28 - * http://developer.gnome.org/gtk3/3.3/ch25s02.html - * http://zetcode.com/tutorials/cairographicstutorial/cairotext - */ - /*--[ Widget definition ]----------------------------------------------------------------------------*/ G_DEFINE_TYPE(v3270, v3270, GTK_TYPE_WIDGET); @@ -128,6 +121,7 @@ static void v3270_class_init(v3270Class *klass) widget_class->focus_out_event = v3270_focus_out_event; widget_class->button_press_event = v3270_button_press_event; widget_class->button_release_event = v3270_button_release_event; + widget_class->motion_notify_event = v3270_motion_notify_event; klass->activate = v3270_activate; klass->toggle_changed = v3270_toggle_changed; @@ -854,3 +848,8 @@ static void v3270_activate(GtkWidget *widget) else v3270_connect(widget,NULL); } + +const GtkWidgetClass * v3270_get_parent_class(void) +{ + return GTK_WIDGET_CLASS(v3270_parent_class); +} -- libgit2 0.21.2