Updating branch refs/heads/0.6.x
         to 2cb7071d1af48b065f8e46e279d6586806b3736e (commit)
       from d3e1aec12fe7f64c24a0c86ec352c04fc2d988c8 (commit)

commit 2cb7071d1af48b065f8e46e279d6586806b3736e
Author: Andre Ellguth <[email protected]>
Date:   Mon Sep 30 18:37:52 2013 +0200

    Implementation of dockapp movement via event handler.

 panel-plugin/catchwindow.c |    4 ++--
 panel-plugin/dockapp.c     |   20 +++++++++++++++-----
 panel-plugin/dockapp.h     |    4 ++--
 3 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/panel-plugin/catchwindow.c b/panel-plugin/catchwindow.c
index 2a2252e..f494de4 100644
--- a/panel-plugin/catchwindow.c
+++ b/panel-plugin/catchwindow.c
@@ -187,8 +187,8 @@ void wmdock_window_open(WnckScreen *s, WnckWindow *w)
 
                dapp->name = g_strdup(wnck_window_get_name(w));
                dapp->cmd = cmd;
-               dapp->width = wi;
-               dapp->height = he;
+               dapp->width = (gint) wi;
+               dapp->height = (gint) he;
 
                if(wmdockIcon && !IS_PANELOFF(wmdock)) {
                        gtk_widget_destroy(wmdockIcon);
diff --git a/panel-plugin/dockapp.c b/panel-plugin/dockapp.c
index da09029..222fd6f 100644
--- a/panel-plugin/dockapp.c
+++ b/panel-plugin/dockapp.c
@@ -49,7 +49,8 @@ static GtkTargetEntry targetList[] = {
                { "INTEGER", 0, 0 }
 };
 static guint nTargets = G_N_ELEMENTS (targetList);
-static DockappNode *dappOnMotion = NULL, *dappDummy = NULL;;
+static DockappNode *dappOnMotion = NULL, *dappDummy = NULL;
+static gint motionstartx = 0, motionstarty = 0;
 
 /**
  * Get the x coordinate child dockapp.
@@ -298,6 +299,8 @@ void wmdock_dockapp_button_press_handler(GtkWidget *tile, 
GdkEventButton *ev, Do
 {
        debug("dockapp.c: Window button press event (dapp: `%s')", dapp->name);
        dappOnMotion = dapp;
+       motionstartx = (gint) ev->x;
+       motionstarty = (gint) ev->y;
        gtk_window_set_keep_above(GTK_WINDOW(dapp->tile), TRUE);
 }
 
@@ -337,15 +340,18 @@ void wmdock_dockapp_button_release_handler(GtkWidget 
*tile, GdkEventButton *ev,
  */
 void wmdock_dockapp_motion_notify_handler(GtkWidget *tile, GdkEventMotion *ev, 
DockappNode *dapp)
 {
-       gint gluepos;
+       gint gluepos, x, y, posx, posy;
        DockappNode *dappSnap = NULL;
        GdkModifierType m;
 
        debug("dockapp.c: Window motion notify event (dapp: `%s')", dapp->name);
 
-       gdk_window_get_pointer(tile->window, NULL, NULL, &m);
-       if(tile && (m & GDK_BUTTON1_MASK)) {
-
+       gdk_window_get_pointer(dapp->tile->window, &x, &y, &m);
+       if(tile && dappOnMotion && (m & GDK_BUTTON1_MASK)) {
+               gtk_window_get_position(GTK_WINDOW(dapp->tile), &posx, &posy);
+               debug("dockapp.c: Mouse x: %d,  Mouse y: %d,  Dapp x: %d, Dapp 
y: %d,  Msx: %d,  Msy: %d",
+                               x, y, posx, posy, motionstartx, motionstarty);
+               gtk_window_move(GTK_WINDOW(dapp->tile), posx - (motionstartx - 
x), posy - (motionstarty - y));
        }
 
        if(dappOnMotion == dapp) {
@@ -643,10 +649,14 @@ void wmdock_update_tile_background(DockappNode *dapp)
                return;
 
        gtk_widget_set_app_paintable(GTK_WIDGET(dapp->evbox), TRUE);
+       gtk_widget_set_app_paintable(GTK_WIDGET(dapp->bg), TRUE);
        gdk_window_set_back_pixmap(GTK_WIDGET(dapp->evbox)->window, 
dapp->bgimg, FALSE);
+       gdk_window_set_back_pixmap(GTK_WIDGET(dapp->bg)->window, dapp->bgimg, 
FALSE);
 
        if (GTK_WIDGET_FLAGS(GTK_WIDGET(dapp->evbox)) & GTK_MAPPED)
                gtk_widget_queue_draw(GTK_WIDGET(dapp->evbox));
+       if (GTK_WIDGET_FLAGS(GTK_WIDGET(dapp->bg)) & GTK_MAPPED)
+               gtk_widget_queue_draw(GTK_WIDGET(dapp->bg));
 }
 
 
diff --git a/panel-plugin/dockapp.h b/panel-plugin/dockapp.h
index 2687107..7de5de3 100644
--- a/panel-plugin/dockapp.h
+++ b/panel-plugin/dockapp.h
@@ -37,8 +37,8 @@ typedef struct _dockapp DockappNode;
 struct _dockapp {
        GtkSocket       *s;
        GdkNativeWindow i;
-       int             width;
-       int             height;
+       gint            width;
+       gint            height;
        GtkWidget       *bg;
        GdkPixmap       *bgimg;
        GtkWidget       *evbox;
_______________________________________________
Xfce4-commits mailing list
[email protected]
https://mail.xfce.org/mailman/listinfo/xfce4-commits

Reply via email to