GdkSuperWinTranslate *translate;
gdk_superwin_scroll (GdkSuperWin *superwin,                     gint dx,                     gint dy){  GdkSuperWinTranslate *translate;  gint width, height;  gdk_window_get_size (superwin->shell_window, &width, &height);  if (dx > 0 || dy > 0)     {      translate = g_new (GdkSuperWinTranslate, 1);      translate->dx = MAX (0, dx);      translate->dy = MAX (0, dy);      translate->serial = NextRequest (GDK_DISPLAY());      superwin->translate_queue = g_list_append (superwin->translate_queue, translate);    }    gdk_window_move_resize (superwin->bin_window,			  MIN (0, -dx), MIN (0, -dy),			  width + ABS(dx), height + ABS(dy));  gdk_window_move (superwin->bin_window,		   MIN (0, -dx) + dx, MIN (0, -dy) + dy);    if (dx < 0 || dy < 0)     {      translate = g_new (GdkSuperWinTranslate, 1);      translate->dx = MIN (0, dx);      translate->dy = MIN (0, dy);      translate->serial = NextRequest (GDK_DISPLAY());      superwin->translate_queue = g_list_append (superwin->translate_queue, translate);    }  gdk_window_move_resize (superwin->bin_window,			  0, 0, width, height);  if (dx < 0)  {    gdk_superwin_expose_area(superwin,                             width + dx, 0,                             -dx, height);  }  else if (dx > 0)  {    gdk_superwin_expose_area(superwin,                             0, 0,                             dx, height);  }  if (dy < 0)  {    gdk_superwin_expose_area(superwin,                             0, height + dy,                             width, -dy);  }  else if (dy > 0)  {    gdk_superwin_expose_area(superwin,                             0, 0,                             width, dy);  }}