[gnome-panel/wip/muktupavels/floating-panels: 2/4] toplevel: center unexpanded panel when changing orientation
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-panel/wip/muktupavels/floating-panels: 2/4] toplevel: center unexpanded panel when changing orientation
- Date: Wed, 21 Apr 2021 21:30:22 +0000 (UTC)
commit 6ca328130e6e00df961d56bc35663062f9246428
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Wed Apr 21 23:53:29 2021 +0300
toplevel: center unexpanded panel when changing orientation
Make sure that unexpanded panel is centered at monitor edge after
changing orientation from horizontal to vertical or vice versa.
gnome-panel/panel-toplevel.c | 87 +++++++++++---------------------------------
1 file changed, 22 insertions(+), 65 deletions(-)
---
diff --git a/gnome-panel/panel-toplevel.c b/gnome-panel/panel-toplevel.c
index e4aad8819..b9065b492 100644
--- a/gnome-panel/panel-toplevel.c
+++ b/gnome-panel/panel-toplevel.c
@@ -176,12 +176,6 @@ struct _PanelToplevelPrivate {
/* This is a keyboard initiated grab operation */
guint grab_is_keyboard : 1;
- /* The x-y co-ordinates temporarily specify the panel center.
- * This is used when the panel is rotating, because the width/height
- * of the toplevel might change, so we need to compute new values for
- * those. */
- guint position_centered : 1;
-
/* More saved grab op state */
guint orig_x_centered : 1;
guint orig_y_centered : 1;
@@ -1953,48 +1947,6 @@ panel_toplevel_update_position (PanelToplevel *toplevel)
return;
}
- if (toplevel->priv->position_centered) {
- toplevel->priv->position_centered = FALSE;
-
- g_object_freeze_notify (G_OBJECT (toplevel));
-
- if (!toplevel->priv->x_centered) {
- int x_right;
-
- toplevel->priv->x -= toplevel->priv->geometry.width / 2;
- g_object_notify (G_OBJECT (toplevel), "x");
-
- if ((toplevel->priv->x + toplevel->priv->geometry.width / 2) > monitor_width / 2)
- x_right = monitor_width - (toplevel->priv->x +
toplevel->priv->geometry.width);
- else
- x_right = -1;
- if (toplevel->priv->x_right != x_right) {
- toplevel->priv->x_right = x_right;
- g_object_notify (G_OBJECT (toplevel),
- "x-right");
- }
- }
-
- if (!toplevel->priv->y_centered) {
- int y_bottom;
-
- toplevel->priv->y -= toplevel->priv->geometry.height / 2;
- g_object_notify (G_OBJECT (toplevel), "y");
-
- if ((toplevel->priv->y + toplevel->priv->geometry.height / 2) > monitor_height / 2)
- y_bottom = monitor_height - (toplevel->priv->y +
toplevel->priv->geometry.height);
- else
- y_bottom = -1;
- if (toplevel->priv->y_bottom != y_bottom) {
- toplevel->priv->y_bottom = y_bottom;
- g_object_notify (G_OBJECT (toplevel),
- "y-bottom");
- }
- }
-
- g_object_thaw_notify (G_OBJECT (toplevel));
- }
-
panel_toplevel_update_expanded_position (toplevel);
panel_toplevel_calc_floating (toplevel); //FIXME should probably be done after
panel_toplevel_update_normal_position() too
@@ -4032,7 +3984,6 @@ panel_toplevel_init (PanelToplevel *toplevel)
toplevel->priv->y_centered = FALSE;
toplevel->priv->animating = FALSE;
toplevel->priv->grab_is_keyboard = FALSE;
- toplevel->priv->position_centered = FALSE;
toplevel->priv->updated_geometry_initial = FALSE;
toplevel->priv->initial_animation_done = FALSE;
@@ -4444,24 +4395,30 @@ panel_toplevel_set_orientation (PanelToplevel *toplevel,
(toplevel->priv->orientation & PANEL_HORIZONTAL_MASK))
rotate = TRUE;
- /* rotate around the center */
- if (rotate && !toplevel->priv->position_centered && !toplevel->priv->expand &&
+ if (rotate &&
+ !toplevel->priv->expand &&
toplevel->priv->updated_geometry_initial) {
- toplevel->priv->position_centered = TRUE;
-
- /* x, y temporary refer to the panel center, so we don't care
- * about x_right, y_bottom. Those will get updated in
- * panel_toplevel_update_position() accordingly. */
- if (!toplevel->priv->x_centered) {
- toplevel->priv->x += toplevel->priv->geometry.width / 2;
- g_object_notify (G_OBJECT (toplevel), "x");
- }
-
- if (!toplevel->priv->y_centered) {
- toplevel->priv->y += toplevel->priv->geometry.height / 2;
- g_object_notify (G_OBJECT (toplevel), "y");
+ switch (orientation) {
+ case PANEL_ORIENTATION_TOP:
+ panel_toplevel_set_x (toplevel, 0, -1, TRUE);
+ panel_toplevel_set_y (toplevel, 0, -1, FALSE);
+ break;
+ case PANEL_ORIENTATION_BOTTOM:
+ panel_toplevel_set_x (toplevel, 0, 0, TRUE);
+ panel_toplevel_set_y (toplevel, 0, 0, FALSE);
+ break;
+ case PANEL_ORIENTATION_LEFT:
+ panel_toplevel_set_x (toplevel, 0, -1, FALSE);
+ panel_toplevel_set_y (toplevel, 0, -1, TRUE);
+ break;
+ case PANEL_ORIENTATION_RIGHT:
+ panel_toplevel_set_x (toplevel, 0, 0, FALSE);
+ panel_toplevel_set_y (toplevel, 0, 0, TRUE);
+ break;
+ default:
+ g_assert_not_reached ();
+ break;
}
-
}
toplevel->priv->orientation = orientation;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]