diff --git a/ChangeLog b/ChangeLog index 07d877882..31ac850db 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2002-06-12 Havoc Pennington + + * src/theme.c (meta_frame_layout_calc_geometry): when a window is + shaded, don't include client height in the height calculation. + + * src/workspace.c (meta_workspace_get_neighbor): apply fix from + Mads Villadsen for the Up arrow key, #84582 + 2002-06-12 Havoc Pennington * src/theme.c (meta_frame_style_draw): Draw the buttons right diff --git a/src/theme.c b/src/theme.c index 030925b71..fe4b5512f 100644 --- a/src/theme.c +++ b/src/theme.c @@ -412,7 +412,8 @@ meta_frame_layout_calc_geometry (const MetaFrameLayout *layout, &fgeom->right_width); width = client_width + fgeom->left_width + fgeom->right_width; - height = client_height + fgeom->top_height + fgeom->bottom_height; + height = ((flags & META_FRAME_SHADED) ? client_height : 0) + + fgeom->top_height + fgeom->bottom_height; fgeom->width = width; fgeom->height = height; diff --git a/src/workspace.c b/src/workspace.c index 92d352ba6..9b46976a4 100644 --- a/src/workspace.c +++ b/src/workspace.c @@ -631,9 +631,22 @@ meta_workspace_get_neighbor (MetaWorkspace *workspace, case META_MOTION_UP: if (i < cols) { - i = grid_area - (i % cols) - 1; - while (i >= num_workspaces) - i -= cols; + if (i == 0) + { + /* special case: go to bottom right corner == grid_area - 1 */ + i = grid_area - 1; + while (i >= num_workspaces) + /* if we are in a non-existant workspace look up in the column for next workspace */ + i -= cols; + } + else + { + /* calculate new workspace based on the bottom left corner == ((rows - 1) * cols) */ + i = ((rows - 1) * cols) + (i - 1); + while (i >= num_workspaces) + /* if we are in a non-existant workspace look up in the column for next workspace */ + i -= cols; + } } else i -= cols;