impl for nice debugging. (meta_workspace_get_neighbor): fix broken logic
2002-11-08 Mark McLoughlin <mark@skynet.ie> * src/workspace.c: (meta_motion_direction_to_string), (meta_screen_corner_to_string): impl for nice debugging. (meta_workspace_get_neighbor): fix broken logic and cleanup debugging.
This commit is contained in:
parent
765cb51df3
commit
bc3b64f922
2 changed files with 70 additions and 19 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
2002-11-08 Mark McLoughlin <mark@skynet.ie>
|
||||||
|
|
||||||
|
* src/workspace.c:
|
||||||
|
(meta_motion_direction_to_string),
|
||||||
|
(meta_screen_corner_to_string): impl for nice debugging.
|
||||||
|
(meta_workspace_get_neighbor): fix broken logic and
|
||||||
|
cleanup debugging.
|
||||||
|
|
||||||
Thu Nov 7 17:07:21 2002 Jonathan Blandford <jrb@redhat.com>
|
Thu Nov 7 17:07:21 2002 Jonathan Blandford <jrb@redhat.com>
|
||||||
|
|
||||||
* src/libmetacity-private.pc.in: add a pc file for
|
* src/libmetacity-private.pc.in: add a pc file for
|
||||||
|
|
|
@ -406,6 +406,42 @@ meta_workspace_get_work_area (MetaWorkspace *workspace,
|
||||||
*area = workspace->work_area;
|
*area = workspace->work_area;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
meta_motion_direction_to_string (MetaMotionDirection direction)
|
||||||
|
{
|
||||||
|
switch (direction)
|
||||||
|
{
|
||||||
|
case META_MOTION_UP:
|
||||||
|
return "Up";
|
||||||
|
case META_MOTION_DOWN:
|
||||||
|
return "Down";
|
||||||
|
case META_MOTION_LEFT:
|
||||||
|
return "Left";
|
||||||
|
case META_MOTION_RIGHT:
|
||||||
|
return "Right";
|
||||||
|
}
|
||||||
|
|
||||||
|
return "Unknown";
|
||||||
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
meta_screen_corner_to_string (MetaScreenCorner corner)
|
||||||
|
{
|
||||||
|
switch (corner)
|
||||||
|
{
|
||||||
|
case META_SCREEN_TOPLEFT:
|
||||||
|
return "TopLeft";
|
||||||
|
case META_SCREEN_TOPRIGHT:
|
||||||
|
return "TopRight";
|
||||||
|
case META_SCREEN_BOTTOMLEFT:
|
||||||
|
return "BottomLeft";
|
||||||
|
case META_SCREEN_BOTTOMRIGHT:
|
||||||
|
return "BottomRight";
|
||||||
|
}
|
||||||
|
|
||||||
|
return "Unknown";
|
||||||
|
}
|
||||||
|
|
||||||
MetaWorkspace*
|
MetaWorkspace*
|
||||||
meta_workspace_get_neighbor (MetaWorkspace *workspace,
|
meta_workspace_get_neighbor (MetaWorkspace *workspace,
|
||||||
MetaMotionDirection direction)
|
MetaMotionDirection direction)
|
||||||
|
@ -422,12 +458,16 @@ meta_workspace_get_neighbor (MetaWorkspace *workspace,
|
||||||
meta_screen_calc_workspace_layout (workspace->screen, num_workspaces,
|
meta_screen_calc_workspace_layout (workspace->screen, num_workspaces,
|
||||||
&rows, &cols);
|
&rows, &cols);
|
||||||
|
|
||||||
|
g_assert (rows != 0 && cols != 0);
|
||||||
|
|
||||||
grid_area = rows * cols;
|
grid_area = rows * cols;
|
||||||
|
|
||||||
meta_verbose ("Getting neighbor rows = %d cols = %d vert = %d "
|
meta_verbose ("Getting neighbor rows = %d cols = %d current = %d "
|
||||||
"current = %d num_spaces = %d neighbor = %d\n",
|
"num_spaces = %d vertical = %s direction = %s corner = %s\n",
|
||||||
rows, cols, workspace->screen->vertical_workspaces,
|
rows, cols, i, num_workspaces,
|
||||||
i, num_workspaces, direction);
|
workspace->screen->vertical_workspaces ? "(true)" : "(false)",
|
||||||
|
meta_motion_direction_to_string (direction),
|
||||||
|
meta_screen_corner_to_string (workspace->screen->starting_corner));
|
||||||
|
|
||||||
/* ok, we want to setup the distances in the workspace array to go
|
/* ok, we want to setup the distances in the workspace array to go
|
||||||
* in each direction. Remember, there are many ways that a workspace
|
* in each direction. Remember, there are many ways that a workspace
|
||||||
|
@ -462,19 +502,19 @@ meta_workspace_get_neighbor (MetaWorkspace *workspace,
|
||||||
{
|
{
|
||||||
up_diff = -1;
|
up_diff = -1;
|
||||||
down_diff = 1;
|
down_diff = 1;
|
||||||
left_diff = -1 * cols;
|
left_diff = -1 * rows;
|
||||||
right_diff = cols;
|
right_diff = rows;
|
||||||
current_col = (i / (cols?cols:1)) + 1;
|
current_col = ((i - 1) / rows) + 1;
|
||||||
current_row = (i % cols) + 1;
|
current_row = ((i - 1) % rows) + 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
up_diff = -1 * rows;
|
up_diff = -1 * cols;
|
||||||
down_diff = rows;
|
down_diff = cols;
|
||||||
left_diff = -1;
|
left_diff = -1;
|
||||||
right_diff = 1;
|
right_diff = 1;
|
||||||
current_col = (i % rows) + 1;
|
current_col = (i % cols) + 1;
|
||||||
current_row = (i / (rows?rows:1)) + 1;
|
current_row = ((i - 1) / cols) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (workspace->screen->starting_corner)
|
switch (workspace->screen->starting_corner)
|
||||||
|
@ -509,25 +549,29 @@ meta_workspace_get_neighbor (MetaWorkspace *workspace,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
meta_verbose ("Workspace deltas: up = %d down = %d left = %d right = %d. "
|
||||||
|
"Current col = %d row = %d\n", up_diff, down_diff, left_diff,
|
||||||
|
right_diff, current_col, current_row);
|
||||||
|
|
||||||
/* calculate what we think the next spot should be */
|
/* calculate what we think the next spot should be */
|
||||||
new_workspace_idx = i;
|
new_workspace_idx = i;
|
||||||
|
|
||||||
switch (direction)
|
switch (direction)
|
||||||
{
|
{
|
||||||
case META_MOTION_LEFT:
|
case META_MOTION_LEFT:
|
||||||
if ((current_col - 1) > 0)
|
if (current_col >= 1)
|
||||||
new_workspace_idx = i + left_diff;
|
new_workspace_idx = i + left_diff;
|
||||||
break;
|
break;
|
||||||
case META_MOTION_RIGHT:
|
case META_MOTION_RIGHT:
|
||||||
if ((current_col + 1) <= rows)
|
if (current_col <= cols)
|
||||||
new_workspace_idx = i + right_diff;
|
new_workspace_idx = i + right_diff;
|
||||||
break;
|
break;
|
||||||
case META_MOTION_UP:
|
case META_MOTION_UP:
|
||||||
if ((current_row - 1) > 0)
|
if (current_row >= 1)
|
||||||
new_workspace_idx = i + up_diff;
|
new_workspace_idx = i + up_diff;
|
||||||
break;
|
break;
|
||||||
case META_MOTION_DOWN:
|
case META_MOTION_DOWN:
|
||||||
if ((current_row + 1) <= cols)
|
if (current_row <= rows)
|
||||||
new_workspace_idx = i + down_diff;
|
new_workspace_idx = i + down_diff;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -539,10 +583,9 @@ meta_workspace_get_neighbor (MetaWorkspace *workspace,
|
||||||
if ((new_workspace_idx >= 0) && (new_workspace_idx < num_workspaces))
|
if ((new_workspace_idx >= 0) && (new_workspace_idx < num_workspaces))
|
||||||
i = new_workspace_idx;
|
i = new_workspace_idx;
|
||||||
|
|
||||||
meta_verbose ("Neighbor space is %d\n", i);
|
meta_verbose ("Neighbor workspace is %d\n", i);
|
||||||
|
|
||||||
return meta_screen_get_workspace_by_index (workspace->screen,
|
return meta_screen_get_workspace_by_index (workspace->screen, i);
|
||||||
i);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const char*
|
const char*
|
||||||
|
|
Loading…
Reference in a new issue