*** metacity/src/display.c	Sat Aug 16 10:36:56 2003
--- metacity2/src/display.c	Tue Aug 19 21:34:32 2003
***************
*** 99,104 ****
--- 99,105 ----
  
  static void    prefs_changed_callback    (MetaPreference pref,
                                            void          *data);
+ int do_not_constrain = 0;
  
  static void
  set_utf8_string_hint (MetaDisplay *display,
***************
*** 1351,1357 ****
                 * the click-to-focus
                 */
                if (!unmodified)
!                 begin_move = TRUE;
              }
            else if (!unmodified && event->xbutton.button == 2)
              {
--- 1352,1361 ----
                 * the click-to-focus
                 */
                if (!unmodified)
!                 {
!                   do_not_constrain = 1;
!                   begin_move = TRUE;
!                 }
              }
            else if (!unmodified && event->xbutton.button == 2)
              {
***************
*** 1442,1448 ****
      case ButtonRelease:
        if (display->grab_window == window &&
            grab_op_is_mouse (display->grab_op))
!         meta_window_handle_mouse_grab_op_event (window, event);
        break;
      case MotionNotify:
        if (display->grab_window == window &&
--- 1446,1455 ----
      case ButtonRelease:
        if (display->grab_window == window &&
            grab_op_is_mouse (display->grab_op))
!         {
!           do_not_constrain = 0;
!           meta_window_handle_mouse_grab_op_event (window, event);
!         }
        break;
      case MotionNotify:
        if (display->grab_window == window &&
*** metacity/src/constraints.c	Mon Aug 18 21:10:01 2003
--- metacity2/src/constraints.c	Tue Aug 19 21:28:25 2003
***************
*** 173,178 ****
--- 173,180 ----
    MetaConstrainMoveFunc     move_func;
  } Constraint;
  
+ extern int do_not_constrain;
+ 
  /* "Is the desktop window" constraint:
   *
   *  new_x = 0;
***************
*** 967,972 ****
--- 969,975 ----
                      "Before: %d %d (Move constraint '%s')\n",
                      x_delta, y_delta, (*cp)->name);
  
+ 	if( !do_not_constrain && orig->y >= 0 )
          if ((* (*cp)->applies_func) (window))
            (* (*cp)->move_func) (window, info, orig,
                                  &x_delta, &y_delta);
