diff -ur xfwm4-4.4.3/mcs-plugin/wmtweaks_plugin.c xfwm4-4.4.3-yosh64/mcs-plugin/wmtweaks_plugin.c --- xfwm4-4.4.3/mcs-plugin/wmtweaks_plugin.c 2008-10-27 09:13:54.000000000 +1100 +++ xfwm4-4.4.3-yosh64/mcs-plugin/wmtweaks_plugin.c 2008-11-15 21:21:20.000000000 +1100 @@ -74,6 +74,7 @@ static gboolean wrap_cycle = FALSE; static int placement_ratio = 20; +static int center_bias = 40; /* yosh64, center bias code */ static int inactive_opacity = 100; static int move_opacity = 100; static int resize_opacity = 100; @@ -536,6 +537,12 @@ gtk_box_pack_start (GTK_BOX (vbox), range, FALSE, TRUE, 0); gtk_widget_show (range); + range = + create_int_range (mcs_plugin, _("Smart placement bias towards center of screen"), /* yosh64, center bias code */ + Q_("Size|Smart"), Q_("Size|Center"), "Xfwm/CenterBias", 0, 100, 5, ¢er_bias); + gtk_box_pack_start (GTK_BOX (vbox), range, FALSE, TRUE, 0); + gtk_widget_show (range); + label = gtk_label_new (_("Placement")); gtk_widget_show (label); gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), @@ -758,6 +765,7 @@ init_gboolean_setting (mcs_plugin, "Xfwm/WrapCycle", &wrap_cycle); init_int_setting (mcs_plugin, "Xfwm/PlacementRatio", &placement_ratio); + init_int_setting (mcs_plugin, "Xfwm/CenterBias", ¢er_bias); /* yosh64, center bias code */ init_int_setting (mcs_plugin, "Xfwm/InactiveOpacity", &inactive_opacity); init_int_setting (mcs_plugin, "Xfwm/FrameOpacity", &frame_opacity); init_int_setting (mcs_plugin, "Xfwm/MoveOpacity", &move_opacity); diff -ur xfwm4-4.4.3/src/placement.c xfwm4-4.4.3-yosh64/src/placement.c --- xfwm4-4.4.3/src/placement.c 2008-10-27 09:13:45.000000000 +1100 +++ xfwm4-4.4.3-yosh64/src/placement.c 2008-11-15 21:15:42.000000000 +1100 @@ -620,6 +620,7 @@ gint n_monitors; gboolean place; gboolean position; + gfloat center_x, center_y, center_bias_norm; /* yosh64, center bias code */ g_return_if_fail (c != NULL); TRACE ("entering clientInitPosition"); @@ -694,6 +695,13 @@ else { smartPlacement (c, full_x, full_y, full_w, full_h); + + /* Apply center bias */ + center_bias_norm = screen_info->params->center_bias / 100.0; /* yosh64, center bias code */ + center_x = (full_w / 2.0) - (frameWidth(c) / 2.0); + center_y = (full_h / 2.0) - (frameHeight(c) / 2.0); + c->x += (int)((center_x - c->x) * center_bias_norm); + c->y += (int)((center_y - c->y) * center_bias_norm); } } diff -ur xfwm4-4.4.3/src/settings.c xfwm4-4.4.3-yosh64/src/settings.c --- xfwm4-4.4.3/src/settings.c 2008-10-27 09:13:45.000000000 +1100 +++ xfwm4-4.4.3-yosh64/src/settings.c 2008-11-15 21:18:31.000000000 +1100 @@ -425,6 +425,10 @@ { screen_info->params->placement_ratio = setting->data.v_int; } + else if (!strcmp (name, "Xfwm/CenterBias")) /* yosh64, center bias code */ + { + screen_info->params->center_bias = setting->data.v_int; + } else if (!strcmp (name, "Xfwm/ShowFrameShadow")) { screen_info->params->show_frame_shadow = setting->data.v_int; @@ -792,6 +796,12 @@ setIntValueFromInt ("placement_ratio", setting->data.v_int, rc); mcs_setting_free (setting); } + if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/CenterBias", CHANNEL5, /* yosh64, center bias code */ + &setting) == MCS_SUCCESS) + { + setIntValueFromInt ("center_bias", setting->data.v_int, rc); + mcs_setting_free (setting); + } if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/InactiveOpacity", CHANNEL5, &setting) == MCS_SUCCESS) { @@ -1337,6 +1347,7 @@ {"maximized_offset", NULL, TRUE}, {"move_opacity", NULL, TRUE}, {"placement_ratio", NULL, TRUE}, + {"center_bias", NULL, TRUE}, /* yosh64, center bias code */ {"popup_opacity", NULL, TRUE}, {"prevent_focus_stealing", NULL, TRUE}, {"raise_delay", NULL, TRUE}, @@ -1493,6 +1504,8 @@ abs (TOINT (getValue ("popup_opacity", rc))); screen_info->params->placement_ratio = abs (TOINT (getValue ("placement_ratio", rc))); + screen_info->params->center_bias = /* yosh64, center bias code */ + abs (TOINT (getValue ("center_bias", rc))); screen_info->params->show_app_icon = !g_ascii_strcasecmp ("true", getValue ("show_app_icon", rc)); screen_info->params->show_frame_shadow = diff -ur xfwm4-4.4.3/src/settings.h xfwm4-4.4.3-yosh64/src/settings.h --- xfwm4-4.4.3/src/settings.h 2008-10-27 09:13:45.000000000 +1100 +++ xfwm4-4.4.3-yosh64/src/settings.h 2008-11-15 21:19:36.000000000 +1100 @@ -188,6 +188,7 @@ int maximized_offset; int move_opacity; int placement_ratio; + int center_bias; /* yosh64, center bias code */ int popup_opacity; int raise_delay; int resize_opacity;