Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/Remmina/Remmina.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel M. Weeks <dan@danweeks.net>2012-02-03 00:39:56 +0400
committerDaniel M. Weeks <dan@danweeks.net>2012-02-03 01:02:58 +0400
commit55d88cf1478c380a66fd6ad2302bbba913cf38df (patch)
treefa5e1b6e17d3d48f525c13abcb26f3a79a7a639a /remmina-plugins/rdp/rdp_event.c
parent9536def3616c21b76fa53099a49122faa93d5105 (diff)
rdp: provide gtk2+3 support
Diffstat (limited to 'remmina-plugins/rdp/rdp_event.c')
-rw-r--r--remmina-plugins/rdp/rdp_event.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/remmina-plugins/rdp/rdp_event.c b/remmina-plugins/rdp/rdp_event.c
index 1ca56dc77..860b05793 100644
--- a/remmina-plugins/rdp/rdp_event.c
+++ b/remmina-plugins/rdp/rdp_event.c
@@ -226,10 +226,18 @@ static gboolean remmina_rdp_event_update_scale_factor(RemminaProtocolWidget* gp)
return FALSE;
}
+#if GTK_VERSION == 2
+static gboolean remmina_rdp_event_on_expose(GtkWidget *widget, GdkEventExpose *event, RemminaProtocolWidget *gp)
+#else
static gboolean remmina_rdp_event_on_draw(GtkWidget* widget, cairo_t* context, RemminaProtocolWidget* gp)
+#endif
{
gboolean scale;
rfContext* rfi;
+#if GTK_VERSION == 2
+ gint x, y;
+ cairo_t *context;
+#endif
rfi = GET_DATA(gp);
@@ -238,8 +246,16 @@ static gboolean remmina_rdp_event_on_draw(GtkWidget* widget, cairo_t* context, R
scale = remmina_plugin_service->protocol_plugin_get_scale(gp);
+#if GTK_VERSION == 2
+ x = event->area.x;
+ y = event->area.y;
+
+ context = gdk_cairo_create(gtk_widget_get_window (rfi->drawing_area));
+ cairo_rectangle(context, x, y, event->area.width, event->area.height);
+#else
cairo_rectangle(context, 0, 0, gtk_widget_get_allocated_width(widget),
gtk_widget_get_allocated_height(widget));
+#endif
if (scale)
cairo_scale(context, rfi->scale_x, rfi->scale_y);
@@ -247,6 +263,10 @@ static gboolean remmina_rdp_event_on_draw(GtkWidget* widget, cairo_t* context, R
cairo_set_source_surface(context, rfi->rgb_cairo_surface, 0, 0);
cairo_fill(context);
+#if GTK_VERSION == 2
+ cairo_destroy(context);
+#endif
+
return TRUE;
}
@@ -462,7 +482,7 @@ void remmina_rdp_event_init(RemminaProtocolWidget* gp)
G_CALLBACK(remmina_rdp_event_on_draw), gp);
#elif GTK_VERSION == 2
g_signal_connect(G_OBJECT(rfi->drawing_area), "expose-event",
- G_CALLBACK(remmina_rdp_event_on_draw), gp);
+ G_CALLBACK(remmina_rdp_event_on_expose), gp);
#endif
g_signal_connect(G_OBJECT(rfi->drawing_area), "configure-event",
G_CALLBACK(remmina_rdp_event_on_configure), gp);