Beispiel #1
0
static VALUE
gdkwin_begin_resize_drag(VALUE self, VALUE edge, VALUE button, VALUE root_x, VALUE root_y, VALUE timestamp)
{
    gdk_window_begin_resize_drag(_SELF(self),
                                 RVAL2GENUM(edge, GDK_TYPE_WINDOW_EDGE),
                                 NUM2INT(button),
                                 NUM2INT(root_x), NUM2INT(root_y),
                                 NUM2UINT(timestamp));
    return self;
}
static VALUE
rg_begin_resize_drag(VALUE self, VALUE edge, VALUE button, VALUE root_x, VALUE root_y, VALUE timestamp)
{
    gdk_window_begin_resize_drag(_SELF(self),
                                 RVAL2GDKWINDOWEDGE(edge),
                                 NUM2INT(button),
                                 NUM2INT(root_x), NUM2INT(root_y),
                                 NUM2UINT(timestamp));
    return self;
}
Beispiel #3
0
JNIEXPORT void JNICALL
Java_org_gnome_gdk_GdkWindow_gdk_1window_1begin_1resize_1drag
(
	JNIEnv* env,
	jclass cls,
	jlong _self,
	jint _edge,
	jint _button,
	jint _rootX,
	jint _rootY,
	jint _timestamp
)
{
	GdkWindow* self;
	GdkWindowEdge edge;
	gint button;
	gint rootX;
	gint rootY;
	guint32 timestamp;

	// convert parameter self
	self = (GdkWindow*) _self;

	// convert parameter edge
	edge = (GdkWindowEdge) _edge;

	// convert parameter button
	button = (gint) _button;

	// convert parameter rootX
	rootX = (gint) _rootX;

	// convert parameter rootY
	rootY = (gint) _rootY;

	// convert parameter timestamp
	timestamp = (guint32) _timestamp;

	// call function
	gdk_window_begin_resize_drag(self, edge, button, rootX, rootY, timestamp);

	// cleanup parameter self

	// cleanup parameter edge

	// cleanup parameter button

	// cleanup parameter rootX

	// cleanup parameter rootY

	// cleanup parameter timestamp
}
NS_IMETHODIMP sbNativeWindowManager::BeginResizeDrag(nsISupports *aWindow, nsIDOMMouseEvent* aEvent, PRInt32 aDirection)
{
  nsresult rv;
  PRInt32 screenX;
  PRInt32 screenY;
  PRUint16 button;
  PRUint32 server_time;
  GdkWindow* window = NULL;
  GdkWindowEdge window_edge;

  NS_ENSURE_ARG_POINTER(aWindow);
  NS_ENSURE_ARG_POINTER(aEvent);

  /* find the window that was passed in */
  rv = GetToplevelGdkWindow(aWindow, &window);
  NS_ENSURE_SUCCESS(rv, rv);

  /* get the currently pressed mouse button from the event */
  rv = aEvent->GetButton(&button);
  NS_ENSURE_SUCCESS(rv, rv);
  /* mozilla and gtk disagree about button numbering... */
  button++;

  /* to work around an old, buggy metacity we need to move ourselves */
  /* where are we? */
  gdk_window_get_position(window, &screenX, &screenY);
  /* let's move to there */
  gdk_window_move(window, screenX, screenY);


#ifdef MOUSE_POSITION_FROM_EVENT
  /* pull the mouse position out of the mozilla event */
  rv = aEvent->GetScreenX(&screenX);
  NS_ENSURE_SUCCESS(rv, rv);
  rv = aEvent->GetScreenY(&screenY);
  NS_ENSURE_SUCCESS(rv, rv);
#else
  {
    /* ask X where the mouse is */
    GdkDisplay* display = NULL;
    GdkScreen* screen = NULL;
    GdkModifierType mask;
    /* get the current (default) display */
    display = gdk_display_get_default();
    if (display == NULL) {
      return NS_ERROR_FAILURE;
    }
    /* get the current pointer position */
    gdk_display_get_pointer(display, &screen, &screenX, &screenY, &mask);
  }
#endif

  /* convert interface directions to GDK_WINDOW_EDGE* */
  switch(aDirection) {
    case sbINativeWindowManager::DIRECTION_NORTH_WEST:
      window_edge = GDK_WINDOW_EDGE_NORTH_WEST;
      break;
    case sbINativeWindowManager::DIRECTION_NORTH:
      window_edge = GDK_WINDOW_EDGE_NORTH;
      break;
    case sbINativeWindowManager::DIRECTION_NORTH_EAST:
      window_edge = GDK_WINDOW_EDGE_NORTH_EAST;
      break;
    case sbINativeWindowManager::DIRECTION_WEST:
      window_edge = GDK_WINDOW_EDGE_WEST;
      break;
    case sbINativeWindowManager::DIRECTION_EAST:
      window_edge = GDK_WINDOW_EDGE_EAST;
      break;
    case sbINativeWindowManager::DIRECTION_SOUTH_WEST:
      window_edge = GDK_WINDOW_EDGE_SOUTH_WEST;
      break;
    case sbINativeWindowManager::DIRECTION_SOUTH:
      window_edge = GDK_WINDOW_EDGE_SOUTH;
      break;
    case sbINativeWindowManager::DIRECTION_SOUTH_EAST:
      window_edge = GDK_WINDOW_EDGE_SOUTH_EAST;
      break;
    default:
      return NS_ERROR_FAILURE;
  }

  /* if I were an event, when would I happen? */
  server_time = gdk_x11_get_server_time(window);

  /* tell the window manager to start the resize */
  gdk_window_begin_resize_drag(window, window_edge, button, 
      screenX, screenY, server_time);

  return NS_OK;
}