mirror of
https://github.com/brl/mutter.git
synced 2024-11-24 17:10:40 -05:00
reset drag state after shaking loose or reattaching. Fix for #132625.
2004-02-16 Rob Adams <readams@readams.net> * src/window.c (update_move): reset drag state after shaking loose or reattaching. Fix for #132625.
This commit is contained in:
parent
88ea02a77a
commit
ad65847d7d
@ -1,3 +1,8 @@
|
|||||||
|
2004-02-16 Rob Adams <readams@readams.net>
|
||||||
|
|
||||||
|
* src/window.c (update_move): reset drag state after shaking loose
|
||||||
|
or reattaching. Fix for #132625.
|
||||||
|
|
||||||
2004-02-15 Anders Carlsson <andersca@gnome.org>
|
2004-02-15 Anders Carlsson <andersca@gnome.org>
|
||||||
|
|
||||||
* src/menu.c (meta_window_menu_new): Actually translate a message,
|
* src/menu.c (meta_window_menu_new): Actually translate a message,
|
||||||
|
42
src/window.c
42
src/window.c
@ -5885,24 +5885,26 @@ update_move (MetaWindow *window,
|
|||||||
|
|
||||||
/* Shake loose */
|
/* Shake loose */
|
||||||
window->shaken_loose = TRUE;
|
window->shaken_loose = TRUE;
|
||||||
|
|
||||||
/* move the unmaximized window to the cursor */
|
/* move the unmaximized window to the cursor */
|
||||||
prop =
|
prop =
|
||||||
((double)(x - window->display->grab_initial_window_pos.x)) /
|
((double)(x - window->display->grab_initial_window_pos.x)) /
|
||||||
((double)window->display->grab_initial_window_pos.width);
|
((double)window->display->grab_initial_window_pos.width);
|
||||||
|
|
||||||
window->display->grab_initial_window_pos.x =
|
window->display->grab_initial_window_pos.x =
|
||||||
x - window->saved_rect.width * prop;
|
x - window->saved_rect.width * prop;
|
||||||
window->display->grab_initial_window_pos.y = y;
|
window->display->grab_initial_window_pos.y = y;
|
||||||
|
|
||||||
if (window->frame)
|
if (window->frame)
|
||||||
{
|
{
|
||||||
window->display->grab_initial_window_pos.y += window->frame->child_y / 2;
|
window->display->grab_initial_window_pos.y += window->frame->child_y / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
window->saved_rect.x = window->display->grab_initial_window_pos.x;
|
||||||
|
window->saved_rect.y = window->display->grab_initial_window_pos.y;
|
||||||
|
window->display->grab_anchor_root_x = x;
|
||||||
|
window->display->grab_anchor_root_y = y;
|
||||||
|
|
||||||
window->saved_rect.x = window->display->grab_initial_window_pos.x-dx;
|
|
||||||
window->saved_rect.y = window->display->grab_initial_window_pos.y-dy;
|
|
||||||
|
|
||||||
meta_window_unmaximize (window);
|
meta_window_unmaximize (window);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@ -5920,13 +5922,13 @@ update_move (MetaWindow *window,
|
|||||||
|
|
||||||
for (monitor = 0; monitor < window->screen->n_xinerama_infos; monitor++)
|
for (monitor = 0; monitor < window->screen->n_xinerama_infos; monitor++)
|
||||||
{
|
{
|
||||||
meta_window_get_work_area_for_xinerama (window, monitor, &work_area);
|
meta_window_get_work_area_for_xinerama (window, monitor, &work_area);
|
||||||
|
|
||||||
/* check if cursor is near the top of a xinerama work area */
|
/* check if cursor is near the top of a xinerama work area */
|
||||||
if (x >= work_area.x &&
|
if (x >= work_area.x &&
|
||||||
x < (work_area.x + work_area.width) &&
|
x < (work_area.x + work_area.width) &&
|
||||||
y >= work_area.y &&
|
y >= work_area.y &&
|
||||||
y < (work_area.y + shake_threshold))
|
y < (work_area.y + shake_threshold))
|
||||||
{
|
{
|
||||||
/* move the saved rect if window will become maximized on an
|
/* move the saved rect if window will become maximized on an
|
||||||
* other monitor so user isn't surprised on a later unmaximize
|
* other monitor so user isn't surprised on a later unmaximize
|
||||||
@ -5934,7 +5936,7 @@ update_move (MetaWindow *window,
|
|||||||
if (wxinerama->number != monitor)
|
if (wxinerama->number != monitor)
|
||||||
{
|
{
|
||||||
window->saved_rect.x = work_area.x;
|
window->saved_rect.x = work_area.x;
|
||||||
window->saved_rect.y = work_area.y;
|
window->saved_rect.y = work_area.y;
|
||||||
|
|
||||||
if (window->frame)
|
if (window->frame)
|
||||||
{
|
{
|
||||||
@ -5945,12 +5947,14 @@ update_move (MetaWindow *window,
|
|||||||
meta_window_unmaximize (window);
|
meta_window_unmaximize (window);
|
||||||
}
|
}
|
||||||
|
|
||||||
window->display->grab_initial_window_pos = work_area;
|
window->display->grab_initial_window_pos = work_area;
|
||||||
window->shaken_loose = FALSE;
|
window->display->grab_anchor_root_x = x;
|
||||||
|
window->display->grab_anchor_root_y = y;
|
||||||
meta_window_maximize (window);
|
window->shaken_loose = FALSE;
|
||||||
|
|
||||||
|
meta_window_maximize (window);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user