summaryrefslogtreecommitdiff
path: root/src/settings.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/settings.c')
-rw-r--r--src/settings.c904
1 files changed, 449 insertions, 455 deletions
diff --git a/src/settings.c b/src/settings.c
index 2e132d749..312521cc9 100644
--- a/src/settings.c
+++ b/src/settings.c
@@ -47,13 +47,38 @@
#define WS_SEP ';'
#define WS_SEP_S ";"
-Params params;
+/* Forward static decls. */
+
+static void notify_cb (const char *,
+ const char *,
+ McsAction,
+ McsSetting *,
+ void *);
+static GdkFilterReturn client_event_filter (GdkXEvent *,
+ GdkEvent *,
+ gpointer);
+static void watch_cb (Window,
+ Bool,
+ long,
+ void *);
+static void loadRcData (ScreenInfo *,
+ Settings rc[]);
+static void loadMcsData (ScreenInfo *,
+ Settings rc[]);
+static void loadTheme (ScreenInfo *,
+ Settings rc[]);
+static void loadShortcutCmd (ScreenInfo *,
+ Settings rc[]);
+static gboolean loadKeyBindings (ScreenInfo *,
+ Settings rc[]);
+static void unloadTheme (ScreenInfo *);
+static void unloadSettings (ScreenInfo *);
+static gboolean reloadScreenSettings (ScreenInfo *,
+ int);
-static McsClient *client = NULL;
-static int mcs_initted = FALSE;
static void
-set_settings_margin (ScreenData *md, int idx, int value)
+set_settings_margin (ScreenInfo *screen_info, int idx, int value)
{
int val;
@@ -65,15 +90,15 @@ set_settings_margin (ScreenData *md, int idx, int value)
{
val = 0;
}
- else if (value > gdk_screen_get_width (md->gscr) / 4)
+ else if (value > gdk_screen_get_width (screen_info->gscr) / 4)
{
- val = gdk_screen_get_width (md->gscr) / 4;
+ val = gdk_screen_get_width (screen_info->gscr) / 4;
}
else
{
val = value;
}
- params.xfwm_margins[idx] = val;
+ screen_info->params->xfwm_margins[idx] = val;
break;
case TOP:
case BOTTOM:
@@ -81,15 +106,15 @@ set_settings_margin (ScreenData *md, int idx, int value)
{
val = 0;
}
- else if (value > gdk_screen_get_height (md->gscr) / 4)
+ else if (value > gdk_screen_get_height (screen_info->gscr) / 4)
{
- val = gdk_screen_get_height (md->gscr) / 4;
+ val = gdk_screen_get_height (screen_info->gscr) / 4;
}
else
{
val = value;
}
- params.xfwm_margins[idx] = val;
+ screen_info->params->xfwm_margins[idx] = val;
break;
default:
break;
@@ -97,20 +122,19 @@ set_settings_margin (ScreenData *md, int idx, int value)
}
static void
-notify_cb (const char *name, const char *channel_name, McsAction action,
- McsSetting * setting, void *data)
+notify_cb (const char *name, const char *channel_name, McsAction action, McsSetting * setting, void *data)
{
- ScreenData *md = (ScreenData *) data;
+ ScreenInfo *screen_info = (ScreenInfo *) data;
+
+ g_return_if_fail (screen_info != NULL);
- g_return_if_fail (md != NULL);
-
if (!g_ascii_strcasecmp (CHANNEL1, channel_name))
{
switch (action)
{
case MCS_ACTION_NEW:
/* The following is to reduce initial startup time and reload */
- if (!mcs_initted)
+ if (!screen_info->mcs_initted)
{
return;
}
@@ -119,84 +143,84 @@ notify_cb (const char *name, const char *channel_name, McsAction action,
{
if (!strcmp (name, "Xfwm/ClickToFocus"))
{
- params.click_to_focus = setting->data.v_int;
+ screen_info->params->click_to_focus = setting->data.v_int;
}
else if (!strcmp (name, "Xfwm/FocusNewWindow"))
{
- params.focus_new = setting->data.v_int;
+ screen_info->params->focus_new = setting->data.v_int;
}
else if (!strcmp (name, "Xfwm/FocusRaise"))
{
- params.raise_on_focus = setting->data.v_int;
+ screen_info->params->raise_on_focus = setting->data.v_int;
}
else if (!strcmp (name, "Xfwm/RaiseDelay"))
{
- params.raise_delay = setting->data.v_int;
+ screen_info->params->raise_delay = setting->data.v_int;
}
else if (!strcmp (name, "Xfwm/RaiseOnClick"))
{
- params.raise_on_click = setting->data.v_int;
+ screen_info->params->raise_on_click = setting->data.v_int;
clientPassGrabButton1 (NULL);
}
else if (!strcmp (name, "Xfwm/SnapToBorder"))
{
- params.snap_to_border = setting->data.v_int;
+ screen_info->params->snap_to_border = setting->data.v_int;
}
else if (!strcmp (name, "Xfwm/SnapToWindows"))
{
- params.snap_to_windows = setting->data.v_int;
+ screen_info->params->snap_to_windows = setting->data.v_int;
}
else if (!strcmp (name, "Xfwm/SnapWidth"))
{
- params.snap_width = setting->data.v_int;
+ screen_info->params->snap_width = setting->data.v_int;
}
else if (!strcmp (name, "Xfwm/WrapWorkspaces"))
{
- params.wrap_workspaces = setting->data.v_int;
- placeSidewalks (md, params.wrap_workspaces);
+ screen_info->params->wrap_workspaces = setting->data.v_int;
+ placeSidewalks (screen_info, screen_info->params->wrap_workspaces);
}
else if (!strcmp (name, "Xfwm/WrapWindows"))
{
- params.wrap_windows = setting->data.v_int;
+ screen_info->params->wrap_windows = setting->data.v_int;
}
else if (!strcmp (name, "Xfwm/WrapResistance"))
{
- params.wrap_resistance = setting->data.v_int;
+ screen_info->params->wrap_resistance = setting->data.v_int;
}
else if (!strcmp (name, "Xfwm/BoxMove"))
{
- params.box_move = setting->data.v_int;
+ screen_info->params->box_move = setting->data.v_int;
}
else if (!strcmp (name, "Xfwm/BoxResize"))
{
- params.box_resize = setting->data.v_int;
+ screen_info->params->box_resize = setting->data.v_int;
}
}
else if (setting->type == MCS_TYPE_STRING)
{
if (!strcmp (name, "Xfwm/DblClickAction"))
{
- reloadSettings (md, NO_UPDATE_FLAG);
+ reloadScreenSettings (screen_info, NO_UPDATE_FLAG);
}
else if (!strcmp (name, "Xfwm/KeyThemeName"))
{
- reloadSettings (md, UPDATE_KEYGRABS);
+ reloadScreenSettings (screen_info, UPDATE_KEYGRABS);
}
else if (!strcmp (name, "Xfwm/ThemeName"))
{
- reloadSettings (md, UPDATE_GRAVITY | UPDATE_CACHE);
+ reloadScreenSettings (screen_info, UPDATE_GRAVITY | UPDATE_CACHE);
}
else if (!strcmp (name, "Xfwm/ButtonLayout"))
{
- reloadSettings (md, UPDATE_FRAME | UPDATE_CACHE);
+ reloadScreenSettings (screen_info, UPDATE_FRAME | UPDATE_CACHE);
}
if (!strcmp (name, "Xfwm/TitleAlign"))
{
- reloadSettings (md, UPDATE_FRAME | UPDATE_CACHE);
+ reloadScreenSettings (screen_info, UPDATE_FRAME | UPDATE_CACHE);
}
if (!strcmp (name, "Xfwm/TitleFont"))
{
- reloadSettings (md, UPDATE_FRAME | UPDATE_CACHE);
+ reloadScreenSettings (screen_info, UPDATE_FRAME | UPDATE_CACHE);
}
}
break;
@@ -211,7 +235,7 @@ notify_cb (const char *name, const char *channel_name, McsAction action,
{
case MCS_ACTION_NEW:
/* The following is to reduce initial startup time and reloads */
- if (!mcs_initted)
+ if (!screen_info->mcs_initted)
{
return;
}
@@ -220,19 +244,19 @@ notify_cb (const char *name, const char *channel_name, McsAction action,
{
if (!strcmp (name, "Xfwm/LeftMargin"))
{
- set_settings_margin (md, LEFT, setting->data.v_int);
+ set_settings_margin (screen_info, LEFT, setting->data.v_int);
}
else if (!strcmp (name, "Xfwm/RightMargin"))
{
- set_settings_margin (md, RIGHT, setting->data.v_int);
+ set_settings_margin (screen_info, RIGHT, setting->data.v_int);
}
else if (!strcmp (name, "Xfwm/BottomMargin"))
{
- set_settings_margin (md, BOTTOM, setting->data.v_int);
+ set_settings_margin (screen_info, BOTTOM, setting->data.v_int);
}
else if (!strcmp (name, "Xfwm/TopMargin"))
{
- set_settings_margin (md, TOP, setting->data.v_int);
+ set_settings_margin (screen_info, TOP, setting->data.v_int);
}
}
break;
@@ -247,7 +271,7 @@ notify_cb (const char *name, const char *channel_name, McsAction action,
{
case MCS_ACTION_NEW:
/* The following is to reduce initial startup time and reloads */
- if (!mcs_initted)
+ if (!screen_info->mcs_initted)
{
return;
}
@@ -256,7 +280,7 @@ notify_cb (const char *name, const char *channel_name, McsAction action,
{
if (!strcmp (name, "Xfwm/WorkspaceCount"))
{
- workspaceSetCount(md, setting->data.v_int);
+ workspaceSetCount(screen_info, setting->data.v_int);
}
}
break;
@@ -270,7 +294,9 @@ notify_cb (const char *name, const char *channel_name, McsAction action,
static GdkFilterReturn
client_event_filter (GdkXEvent * xevent, GdkEvent * event, gpointer data)
{
- if (mcs_client_process_event (client, (XEvent *) xevent))
+ ScreenInfo *screen_info = (ScreenInfo *) data;
+
+ if (mcs_client_process_event (screen_info->mcs_client, (XEvent *) xevent))
return GDK_FILTER_REMOVE;
else
return GDK_FILTER_CONTINUE;
@@ -304,7 +330,7 @@ watch_cb (Window window, Bool is_start, long mask, void *cb_data)
}
static void
-loadRcData (ScreenData *md, Settings rc[])
+loadRcData (ScreenInfo *screen_info, Settings rc[])
{
const gchar *homedir = xfce_get_userdir ();
gchar *keytheme;
@@ -326,151 +352,151 @@ loadRcData (ScreenData *md, Settings rc[])
}
static void
-loadMcsData (ScreenData *md, Settings rc[])
+loadMcsData (ScreenInfo *screen_info, Settings rc[])
{
McsSetting *setting;
- if (client)
+ if (screen_info->mcs_client)
{
- if (mcs_client_get_setting (client, "Xfwm/ClickToFocus", CHANNEL1,
+ if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/ClickToFocus", CHANNEL1,
&setting) == MCS_SUCCESS)
{
setBooleanValueFromInt ("click_to_focus", setting->data.v_int, rc);
mcs_setting_free (setting);
}
- if (mcs_client_get_setting (client, "Xfwm/FocusNewWindow", CHANNEL1,
+ if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/FocusNewWindow", CHANNEL1,
&setting) == MCS_SUCCESS)
{
setBooleanValueFromInt ("focus_new", setting->data.v_int, rc);
mcs_setting_free (setting);
}
- if (mcs_client_get_setting (client, "Xfwm/FocusRaise", CHANNEL1,
+ if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/FocusRaise", CHANNEL1,
&setting) == MCS_SUCCESS)
{
setBooleanValueFromInt ("raise_on_focus", setting->data.v_int, rc);
mcs_setting_free (setting);
}
- if (mcs_client_get_setting (client, "Xfwm/RaiseDelay", CHANNEL1,
+ if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/RaiseDelay", CHANNEL1,
&setting) == MCS_SUCCESS)
{
setIntValueFromInt ("raise_delay", setting->data.v_int, rc);
mcs_setting_free (setting);
}
- if (mcs_client_get_setting (client, "Xfwm/RaiseOnClick", CHANNEL1,
+ if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/RaiseOnClick", CHANNEL1,
&setting) == MCS_SUCCESS)
{
setBooleanValueFromInt ("raise_on_click", setting->data.v_int, rc);
mcs_setting_free (setting);
}
- if (mcs_client_get_setting (client, "Xfwm/SnapToBorder", CHANNEL1,
+ if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/SnapToBorder", CHANNEL1,
&setting) == MCS_SUCCESS)
{
setBooleanValueFromInt ("snap_to_border", setting->data.v_int, rc);
mcs_setting_free (setting);
}
- if (mcs_client_get_setting (client, "Xfwm/SnapToWindows", CHANNEL1,
+ if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/SnapToWindows", CHANNEL1,
&setting) == MCS_SUCCESS)
{
setBooleanValueFromInt ("snap_to_windows", setting->data.v_int,
rc);
mcs_setting_free (setting);
}
- if (mcs_client_get_setting (client, "Xfwm/SnapWidth", CHANNEL1,
+ if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/SnapWidth", CHANNEL1,
&setting) == MCS_SUCCESS)
{
setIntValueFromInt ("snap_width", setting->data.v_int, rc);
mcs_setting_free (setting);
}
- if (mcs_client_get_setting (client, "Xfwm/WrapWorkspaces", CHANNEL1,
+ if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/WrapWorkspaces", CHANNEL1,
&setting) == MCS_SUCCESS)
{
setBooleanValueFromInt ("wrap_workspaces", setting->data.v_int, rc);
mcs_setting_free (setting);
}
- if (mcs_client_get_setting (client, "Xfwm/WrapWindows", CHANNEL1,
+ if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/WrapWindows", CHANNEL1,
&setting) == MCS_SUCCESS)
{
setBooleanValueFromInt ("wrap_windows", setting->data.v_int, rc);
mcs_setting_free (setting);
}
- if (mcs_client_get_setting (client, "Xfwm/WrapResistance", CHANNEL1,
+ if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/WrapResistance", CHANNEL1,
&setting) == MCS_SUCCESS)
{
setIntValueFromInt ("wrap_resistance", setting->data.v_int, rc);
mcs_setting_free (setting);
}
- if (mcs_client_get_setting (client, "Xfwm/BoxMove", CHANNEL1,
+ if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/BoxMove", CHANNEL1,
&setting) == MCS_SUCCESS)
{
setBooleanValueFromInt ("box_move", setting->data.v_int, rc);
mcs_setting_free (setting);
}
- if (mcs_client_get_setting (client, "Xfwm/BoxResize", CHANNEL1,
+ if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/BoxResize", CHANNEL1,
&setting) == MCS_SUCCESS)
{
setBooleanValueFromInt ("box_resize", setting->data.v_int, rc);
mcs_setting_free (setting);
}
- if (mcs_client_get_setting (client, "Xfwm/DblClickAction", CHANNEL1,
+ if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/DblClickAction", CHANNEL1,
&setting) == MCS_SUCCESS)
{
setValue ("double_click_action", setting->data.v_string, rc);
mcs_setting_free (setting);
}
- if (mcs_client_get_setting (client, "Xfwm/ThemeName", CHANNEL1,
+ if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/ThemeName", CHANNEL1,
&setting) == MCS_SUCCESS)
{
setValue ("theme", setting->data.v_string, rc);
mcs_setting_free (setting);
}
- if (mcs_client_get_setting (client, "Xfwm/KeyThemeName", CHANNEL1,
+ if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/KeyThemeName", CHANNEL1,
&setting) == MCS_SUCCESS)
{
setValue ("keytheme", setting->data.v_string, rc);
mcs_setting_free (setting);
}
- if (mcs_client_get_setting (client, "Xfwm/ButtonLayout", CHANNEL1,
+ if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/ButtonLayout", CHANNEL1,
&setting) == MCS_SUCCESS)
{
setValue ("button_layout", setting->data.v_string, rc);
mcs_setting_free (setting);
}
- if (mcs_client_get_setting (client, "Xfwm/TitleAlign", CHANNEL1,
+ if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/TitleAlign", CHANNEL1,
&setting) == MCS_SUCCESS)
{
setValue ("title_alignment", setting->data.v_string, rc);
mcs_setting_free (setting);
}
- if (mcs_client_get_setting (client, "Xfwm/TitleFont", CHANNEL1,
+ if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/TitleFont", CHANNEL1,
&setting) == MCS_SUCCESS)
{
setValue ("title_font", setting->data.v_string, rc);
mcs_setting_free (setting);
}
- if (mcs_client_get_setting (client, "Xfwm/LeftMargin", CHANNEL2,
+ if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/LeftMargin", CHANNEL2,
&setting) == MCS_SUCCESS)
{
setIntValueFromInt ("margin_left", setting->data.v_int, rc);
mcs_setting_free (setting);
}
- if (mcs_client_get_setting (client, "Xfwm/RightMargin", CHANNEL2,
+ if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/RightMargin", CHANNEL2,
&setting) == MCS_SUCCESS)
{
setIntValueFromInt ("margin_right", setting->data.v_int, rc);
mcs_setting_free (setting);
}
- if (mcs_client_get_setting (client, "Xfwm/BottomMargin", CHANNEL2,
+ if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/BottomMargin", CHANNEL2,
&setting) == MCS_SUCCESS)
{
setIntValueFromInt ("margin_bottom", setting->data.v_int, rc);
mcs_setting_free (setting);
}
- if (mcs_client_get_setting (client, "Xfwm/TopMargin", CHANNEL2,
+ if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/TopMargin", CHANNEL2,
&setting) == MCS_SUCCESS)
{
setIntValueFromInt ("margin_top", setting->data.v_int, rc);
mcs_setting_free (setting);
}
- if (mcs_client_get_setting (client, "Xfwm/WorkspaceCount", CHANNEL3,
+ if (mcs_client_get_setting (screen_info->mcs_client, "Xfwm/WorkspaceCount", CHANNEL3,
&setting) == MCS_SUCCESS)
{
setIntValueFromInt ("workspace_count", setting->data.v_int, rc);
@@ -480,14 +506,17 @@ loadMcsData (ScreenData *md, Settings rc[])
}
static void
-loadTheme (ScreenData *md, Settings rc[])
+loadTheme (ScreenInfo *screen_info, Settings rc[])
{
+ GtkWidget *widget = myScreenGetGtkWidget (screen_info);
+ DisplayInfo *display_info = screen_info->display_info;
+ GSList *screens;
gchar *theme;
gchar *font;
XpmColorSymbol colsym[20];
- GtkWidget *widget = xfce_get_default_gtk_widget (md->xfilter);
- PangoFontDescription *desc;
+ PangoFontDescription *desc = NULL;
guint i;
+ GValue tmp_val = { 0, };
rc[0].value = get_style (widget, "fg", "selected");
rc[1].value = get_style (widget, "fg", "normal");
@@ -519,245 +548,249 @@ loadTheme (ScreenData *md, Settings rc[])
colsym[i].value = rc[i].value;
}
- if (params.title_colors[ACTIVE].allocated)
+ g_value_init (&tmp_val, G_TYPE_INT);
+ display_info->dbl_click_time = abs (TOINT (getValue ("dbl_click_time", rc)));
+ if (gdk_setting_get ("gtk-double-click-time", &tmp_val))
{
- gdk_colormap_free_colors (gdk_screen_get_rgb_colormap (md->gscr),
- &params.title_colors[ACTIVE].col, 1);
- params.title_colors[ACTIVE].allocated = FALSE;
+ display_info->dbl_click_time = abs (g_value_get_int (&tmp_val));
}
- if (gdk_color_parse (rc[0].value, &params.title_colors[ACTIVE].col))
+
+ font = getValue ("title_font", rc);
+ if (font && strlen (font))
{
- if (gdk_colormap_alloc_color (gdk_screen_get_rgb_colormap (md->gscr),
- &params.title_colors[ACTIVE].col, FALSE, FALSE))
+ desc = pango_font_description_from_string (font);
+ if (desc)
{
- params.title_colors[ACTIVE].allocated = TRUE;
- if (params.title_colors[ACTIVE].gc)
+ gtk_widget_modify_font (widget, desc);
+ g_free (desc);
+ }
+
+ }
+
+ if (screen_info->title_colors[ACTIVE].allocated)
+ {
+ gdk_colormap_free_colors (gdk_screen_get_rgb_colormap (screen_info->gscr),
+ &screen_info->title_colors[ACTIVE].col, 1);
+ screen_info->title_colors[ACTIVE].allocated = FALSE;
+ }
+ if (gdk_color_parse (rc[0].value, &screen_info->title_colors[ACTIVE].col))
+ {
+ if (gdk_colormap_alloc_color (gdk_screen_get_rgb_colormap (screen_info->gscr),
+ &screen_info->title_colors[ACTIVE].col, FALSE, FALSE))
+ {
+ screen_info->title_colors[ACTIVE].allocated = TRUE;
+ if (screen_info->title_colors[ACTIVE].gc)
{
- g_object_unref (G_OBJECT (params.title_colors[ACTIVE].gc));
+ g_object_unref (G_OBJECT (screen_info->title_colors[ACTIVE].gc));
}
- params.title_colors[ACTIVE].gc =
- gdk_gc_new (xfce_get_default_gdk_window (md->xfilter));
- gdk_gc_copy (params.title_colors[ACTIVE].gc, get_style_gc (widget,
+ screen_info->title_colors[ACTIVE].gc =
+ gdk_gc_new (myScreenGetGdkWindow (screen_info));
+ gdk_gc_copy (screen_info->title_colors[ACTIVE].gc, get_style_gc (widget,
"text", "selected"));
- gdk_gc_set_foreground (params.title_colors[ACTIVE].gc,
- &params.title_colors[ACTIVE].col);
+ gdk_gc_set_foreground (screen_info->title_colors[ACTIVE].gc,
+ &screen_info->title_colors[ACTIVE].col);
}
else
{
gdk_beep ();
- g_message (_("%s: Cannot allocate active color %s\n"),
- g_get_prgname (), rc[0].value);
+ g_message (_("%s: Cannot allocate active color %s\n"), g_get_prgname (), rc[0].value);
}
}
else
{
gdk_beep ();
- g_message (_("%s: Cannot parse active color %s\n"), g_get_prgname (),
- rc[0].value);
+ g_message (_("%s: Cannot parse active color %s\n"), g_get_prgname (), rc[0].value);
}
- if (params.black_gc)
+ if (screen_info->black_gc)
{
- g_object_unref (G_OBJECT (params.black_gc));
+ g_object_unref (G_OBJECT (screen_info->black_gc));
}
- params.black_gc = widget->style->black_gc;
+ screen_info->black_gc = widget->style->black_gc;
g_object_ref (G_OBJECT (widget->style->black_gc));
- if (params.white_gc)
+ if (screen_info->white_gc)
{
- g_object_unref (G_OBJECT (params.white_gc));
+ g_object_unref (G_OBJECT (screen_info->white_gc));
}
- params.white_gc = widget->style->white_gc;
+ screen_info->white_gc = widget->style->white_gc;
g_object_ref (G_OBJECT (widget->style->white_gc));
- if (params.title_colors[INACTIVE].allocated)
+ if (screen_info->title_colors[INACTIVE].allocated)
{
- gdk_colormap_free_colors (gdk_screen_get_rgb_colormap (md->gscr),
- &params.title_colors[INACTIVE].col, 1);
- params.title_colors[INACTIVE].allocated = FALSE;
+ gdk_colormap_free_colors (gdk_screen_get_rgb_colormap (screen_info->gscr),
+ &screen_info->title_colors[INACTIVE].col, 1);
+ screen_info->title_colors[INACTIVE].allocated = FALSE;
}
- if (gdk_color_parse (rc[1].value, &params.title_colors[INACTIVE].col))
+ if (gdk_color_parse (rc[1].value, &screen_info->title_colors[INACTIVE].col))
{
- if (gdk_colormap_alloc_color (gdk_screen_get_rgb_colormap (md->gscr),
- &params.title_colors[INACTIVE].col, FALSE, FALSE))
+ if (gdk_colormap_alloc_color (gdk_screen_get_rgb_colormap (screen_info->gscr),
+ &screen_info->title_colors[INACTIVE].col, FALSE, FALSE))
{
- params.title_colors[INACTIVE].allocated = TRUE;
- if (params.title_colors[INACTIVE].gc)
+ screen_info->title_colors[INACTIVE].allocated = TRUE;
+ if (screen_info->title_colors[INACTIVE].gc)
{
- g_object_unref (G_OBJECT (params.title_colors[INACTIVE].gc));
+ g_object_unref (G_OBJECT (screen_info->title_colors[INACTIVE].gc));
}
- params.title_colors[INACTIVE].gc =
- gdk_gc_new (xfce_get_default_gdk_window (md->xfilter));
- gdk_gc_copy (params.title_colors[INACTIVE].gc,
+ screen_info->title_colors[INACTIVE].gc =
+ gdk_gc_new (myScreenGetGdkWindow (screen_info));
+ gdk_gc_copy (screen_info->title_colors[INACTIVE].gc,
get_style_gc (widget, "text", "normal"));
- gdk_gc_set_foreground (params.title_colors[INACTIVE].gc,
- &params.title_colors[INACTIVE].col);
+ gdk_gc_set_foreground (screen_info->title_colors[INACTIVE].gc,
+ &screen_info->title_colors[INACTIVE].col);
}
else
{
gdk_beep ();
- g_message (_("%s: Cannot allocate inactive color %s\n"),
- g_get_prgname (), rc[1].value);
+ g_message (_("%s: Cannot allocate inactive color %s\n"), g_get_prgname (), rc[1].value);
}
}
else
{
gdk_beep ();
- g_message (_("%s: Cannot parse inactive color %s\n"),
- g_get_prgname (), rc[1].value);
- }
-
- font = getValue ("title_font", rc);
- if (font && strlen (font))
- {
- desc = pango_font_description_from_string (font);
- if (desc)
- {
- gtk_widget_modify_font (widget, desc);
- g_free (desc);
- }
+ g_message (_("%s: Cannot parse inactive color %s\n"), g_get_prgname (), rc[1].value);
}
- myPixmapLoad (md, &params.sides[SIDE_LEFT][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->sides[SIDE_LEFT][ACTIVE], theme,
"left-active", colsym, 20);
- myPixmapLoad (md, &params.sides[SIDE_LEFT][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->sides[SIDE_LEFT][INACTIVE], theme,
"left-inactive", colsym, 20);
- myPixmapLoad (md, &params.sides[SIDE_RIGHT][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->sides[SIDE_RIGHT][ACTIVE], theme,
"right-active", colsym, 20);
- myPixmapLoad (md, &params.sides[SIDE_RIGHT][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->sides[SIDE_RIGHT][INACTIVE], theme,
"right-inactive", colsym, 20);
- myPixmapLoad (md, &params.sides[SIDE_BOTTOM][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->sides[SIDE_BOTTOM][ACTIVE], theme,
"bottom-active", colsym, 20);
- myPixmapLoad (md, &params.sides[SIDE_BOTTOM][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->sides[SIDE_BOTTOM][INACTIVE], theme,
"bottom-inactive", colsym, 20);
- myPixmapLoad (md, &params.corners[CORNER_TOP_LEFT][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_TOP_LEFT][ACTIVE], theme,
"top-left-active", colsym, 20);
- myPixmapLoad (md, &params.corners[CORNER_TOP_LEFT][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_TOP_LEFT][INACTIVE], theme,
"top-left-inactive", colsym, 20);
- myPixmapLoad (md, &params.corners[CORNER_TOP_RIGHT][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_TOP_RIGHT][ACTIVE], theme,
"top-right-active", colsym, 20);
- myPixmapLoad (md, &params.corners[CORNER_TOP_RIGHT][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_TOP_RIGHT][INACTIVE], theme,
"top-right-inactive", colsym, 20);
- myPixmapLoad (md, &params.corners[CORNER_BOTTOM_LEFT][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_BOTTOM_LEFT][ACTIVE], theme,
"bottom-left-active", colsym, 20);
- myPixmapLoad (md, &params.corners[CORNER_BOTTOM_LEFT][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_BOTTOM_LEFT][INACTIVE], theme,
"bottom-left-inactive", colsym, 20);
- myPixmapLoad (md, &params.corners[CORNER_BOTTOM_RIGHT][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_BOTTOM_RIGHT][ACTIVE], theme,
"bottom-right-active", colsym, 20);
- myPixmapLoad (md, &params.corners[CORNER_BOTTOM_RIGHT][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_BOTTOM_RIGHT][INACTIVE], theme,
"bottom-right-inactive", colsym, 20);
- myPixmapLoad (md, &params.buttons[HIDE_BUTTON][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[HIDE_BUTTON][ACTIVE], theme,
"hide-active", colsym, 20);
- myPixmapLoad (md, &params.buttons[HIDE_BUTTON][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[HIDE_BUTTON][INACTIVE], theme,
"hide-inactive", colsym, 20);
- myPixmapLoad (md, &params.buttons[HIDE_BUTTON][PRESSED], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[HIDE_BUTTON][PRESSED], theme,
"hide-pressed", colsym, 20);
- myPixmapLoad (md, &params.buttons[CLOSE_BUTTON][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[CLOSE_BUTTON][ACTIVE], theme,
"close-active", colsym, 20);
- myPixmapLoad (md, &params.buttons[CLOSE_BUTTON][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[CLOSE_BUTTON][INACTIVE], theme,
"close-inactive", colsym, 20);
- myPixmapLoad (md, &params.buttons[CLOSE_BUTTON][PRESSED], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[CLOSE_BUTTON][PRESSED], theme,
"close-pressed", colsym, 20);
- myPixmapLoad (md, &params.buttons[MAXIMIZE_BUTTON][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[MAXIMIZE_BUTTON][ACTIVE], theme,
"maximize-active", colsym, 20);
- myPixmapLoad (md, &params.buttons[MAXIMIZE_BUTTON][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[MAXIMIZE_BUTTON][INACTIVE], theme,
"maximize-inactive", colsym, 20);
- myPixmapLoad (md, &params.buttons[MAXIMIZE_BUTTON][PRESSED], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[MAXIMIZE_BUTTON][PRESSED], theme,
"maximize-pressed", colsym, 20);
- myPixmapLoad (md, &params.buttons[SHADE_BUTTON][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[SHADE_BUTTON][ACTIVE], theme,
"shade-active", colsym, 20);
- myPixmapLoad (md, &params.buttons[SHADE_BUTTON][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[SHADE_BUTTON][INACTIVE], theme,
"shade-inactive", colsym, 20);
- myPixmapLoad (md, &params.buttons[SHADE_BUTTON][PRESSED], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[SHADE_BUTTON][PRESSED], theme,
"shade-pressed", colsym, 20);
- myPixmapLoad (md, &params.buttons[STICK_BUTTON][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[STICK_BUTTON][ACTIVE], theme,
"stick-active", colsym, 20);
- myPixmapLoad (md, &params.buttons[STICK_BUTTON][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[STICK_BUTTON][INACTIVE], theme,
"stick-inactive", colsym, 20);
- myPixmapLoad (md, &params.buttons[STICK_BUTTON][PRESSED], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[STICK_BUTTON][PRESSED], theme,
"stick-pressed", colsym, 20);
- myPixmapLoad (md, &params.buttons[MENU_BUTTON][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[MENU_BUTTON][ACTIVE], theme,
"menu-active", colsym, 20);
- myPixmapLoad (md, &params.buttons[MENU_BUTTON][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[MENU_BUTTON][INACTIVE], theme,
"menu-inactive", colsym, 20);
- myPixmapLoad (md, &params.buttons[MENU_BUTTON][PRESSED], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[MENU_BUTTON][PRESSED], theme,
"menu-pressed", colsym, 20);
- myPixmapLoad (md, &params.buttons[SHADE_BUTTON][T_ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[SHADE_BUTTON][T_ACTIVE], theme,
"shade-toggled-active", colsym, 20);
- myPixmapLoad (md, &params.buttons[SHADE_BUTTON][T_INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[SHADE_BUTTON][T_INACTIVE], theme,
"shade-toggled-inactive", colsym, 20);
- myPixmapLoad (md, &params.buttons[SHADE_BUTTON][T_PRESSED], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[SHADE_BUTTON][T_PRESSED], theme,
"shade-toggled-pressed", colsym, 20);
- myPixmapLoad (md, &params.buttons[STICK_BUTTON][T_ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[STICK_BUTTON][T_ACTIVE], theme,
"stick-toggled-active", colsym, 20);
- myPixmapLoad (md, &params.buttons[STICK_BUTTON][T_INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[STICK_BUTTON][T_INACTIVE], theme,
"stick-toggled-inactive", colsym, 20);
- myPixmapLoad (md, &params.buttons[STICK_BUTTON][T_PRESSED], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[STICK_BUTTON][T_PRESSED], theme,
"stick-toggled-pressed", colsym, 20);
- myPixmapLoad (md, &params.buttons[MAXIMIZE_BUTTON][T_ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[MAXIMIZE_BUTTON][T_ACTIVE], theme,
"maximize-toggled-active", colsym, 20);
- myPixmapLoad (md, &params.buttons[MAXIMIZE_BUTTON][T_INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[MAXIMIZE_BUTTON][T_INACTIVE], theme,
"maximize-toggled-inactive", colsym, 20);
- myPixmapLoad (md, &params.buttons[MAXIMIZE_BUTTON][T_PRESSED], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->buttons[MAXIMIZE_BUTTON][T_PRESSED], theme,
"maximize-toggled-pressed", colsym, 20);
- myPixmapLoad (md, &params.title[TITLE_1][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_1][ACTIVE], theme,
"title-1-active", colsym, 20);
- myPixmapLoad (md, &params.title[TITLE_1][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_1][INACTIVE], theme,
"title-1-inactive", colsym, 20);
- myPixmapLoad (md, &params.title[TITLE_2][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_2][ACTIVE], theme,
"title-2-active", colsym, 20);
- myPixmapLoad (md, &params.title[TITLE_2][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_2][INACTIVE], theme,
"title-2-inactive", colsym, 20);
- myPixmapLoad (md, &params.title[TITLE_3][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_3][ACTIVE], theme,
"title-3-active", colsym, 20);
- myPixmapLoad (md, &params.title[TITLE_3][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_3][INACTIVE], theme,
"title-3-inactive", colsym, 20);
- myPixmapLoad (md, &params.title[TITLE_4][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_4][ACTIVE], theme,
"title-4-active", colsym, 20);
- myPixmapLoad (md, &params.title[TITLE_4][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_4][INACTIVE], theme,
"title-4-inactive", colsym, 20);
- myPixmapLoad (md, &params.title[TITLE_5][ACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_5][ACTIVE], theme,
"title-5-active", colsym, 20);
- myPixmapLoad (md, &params.title[TITLE_5][INACTIVE], theme,
+ xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_5][INACTIVE], theme,
"title-5-inactive", colsym, 20);
+ screen_info->box_gc = createGC (screen_info, "#FFFFFF", GXxor, NULL, 2, TRUE);
+
if (!g_ascii_strcasecmp ("left", getValue ("title_alignment", rc)))
{
- params.title_alignment = ALIGN_LEFT;
+ screen_info->params->title_alignment = ALIGN_LEFT;
}
else if (!g_ascii_strcasecmp ("right", getValue ("title_alignment", rc)))
{
- params.title_alignment = ALIGN_RIGHT;
+ screen_info->params->title_alignment = ALIGN_RIGHT;
}
else
{
- params.title_alignment = ALIGN_CENTER;
+ screen_info->params->title_alignment = ALIGN_CENTER;
}
- params.full_width_title =
+ screen_info->params->full_width_title =
!g_ascii_strcasecmp ("true", getValue ("full_width_title", rc));
- params.title_shadow[ACTIVE] =
+ screen_info->params->title_shadow[ACTIVE] =
!g_ascii_strcasecmp ("true", getValue ("title_shadow_active", rc));
- params.title_shadow[INACTIVE] =
+ screen_info->params->title_shadow[INACTIVE] =
!g_ascii_strcasecmp ("true", getValue ("title_shadow_inactive", rc));
- strncpy (params.button_layout, getValue ("button_layout", rc), 7);
- params.button_spacing = TOINT (getValue ("button_spacing", rc));
- params.button_offset = TOINT (getValue ("button_offset", rc));
- params.title_vertical_offset_active =
+ strncpy (screen_info->params->button_layout, getValue ("button_layout", rc), 7);
+ screen_info->params->button_spacing = TOINT (getValue ("button_spacing", rc));
+ screen_info->params->button_offset = TOINT (getValue ("button_offset", rc));
+ screen_info->params->title_vertical_offset_active =
TOINT (getValue ("title_vertical_offset_active", rc));
- params.title_vertical_offset_inactive =
+ screen_info->params->title_vertical_offset_inactive =
TOINT (getValue ("title_vertical_offset_inactive", rc));
- params.title_horizontal_offset =
+ screen_info->params->title_horizontal_offset =
TOINT (getValue ("title_horizontal_offset", rc));
- params.box_gc = createGC (md, "#FFFFFF", GXxor, NULL, 2, TRUE);
-
g_free (theme);
}
static void
-loadShortcutCmd (Settings rc[])
+loadShortcutCmd (ScreenInfo *screen_info, Settings rc[])
{
int i;
@@ -765,26 +798,28 @@ loadShortcutCmd (Settings rc[])
{
gchar *tmp, *shortcut;
tmp = g_strdup_printf ("shortcut_%i_exec", i + 1);
- if (params.shortcut_exec[i])
+ if (screen_info->params->shortcut_exec[i])
{
- g_free (params.shortcut_exec[i]);
- params.shortcut_exec[i] = NULL;
+ g_free (screen_info->params->shortcut_exec[i]);
+ screen_info->params->shortcut_exec[i] = NULL;
}
shortcut = getValue (tmp, rc);
if (shortcut)
{
- params.shortcut_exec[i] = g_strdup (shortcut);
+ screen_info->params->shortcut_exec[i] = g_strdup (shortcut);
}
g_free (tmp);
}
}
static gboolean
-loadKeyBindings (ScreenData *md, Settings rc[])
+loadKeyBindings (ScreenInfo *screen_info, Settings rc[])
{
+ Display *dpy;
gchar *keytheme;
gchar *keythemevalue;
+ dpy = myScreenGetXDisplay (screen_info);
keythemevalue = getValue ("keytheme", rc);
if (keythemevalue)
{
@@ -806,143 +841,92 @@ loadKeyBindings (ScreenData *md, Settings rc[])
}
}
- loadShortcutCmd (rc);
-
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_UP],
- getValue ("move_window_up_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_DOWN],
- getValue ("move_window_down_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_LEFT],
- getValue ("move_window_left_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_RIGHT],
- getValue ("move_window_right_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_RESIZE_UP],
- getValue ("resize_window_up_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_RESIZE_DOWN],
- getValue ("resize_window_down_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_RESIZE_LEFT],
- getValue ("resize_window_left_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_RESIZE_RIGHT],
- getValue ("resize_window_right_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_CYCLE_WINDOWS],
- getValue ("cycle_windows_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_CLOSE_WINDOW],
- getValue ("close_window_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_HIDE_WINDOW],
- getValue ("hide_window_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MAXIMIZE_WINDOW],
- getValue ("maximize_window_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MAXIMIZE_VERT],
- getValue ("maximize_vert_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MAXIMIZE_HORIZ],
- getValue ("maximize_horiz_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_SHADE_WINDOW],
- getValue ("shade_window_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_NEXT_WORKSPACE],
- getValue ("next_workspace_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_PREV_WORKSPACE],
- getValue ("prev_workspace_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_ADD_WORKSPACE],
- getValue ("add_workspace_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_DEL_WORKSPACE],
- getValue ("del_workspace_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_STICK_WINDOW],
- getValue ("stick_window_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_WORKSPACE_1],
- getValue ("workspace_1_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_WORKSPACE_2],
- getValue ("workspace_2_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_WORKSPACE_3],
- getValue ("workspace_3_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_WORKSPACE_4],
- getValue ("workspace_4_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_WORKSPACE_5],
- getValue ("workspace_5_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_WORKSPACE_6],
- getValue ("workspace_6_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_WORKSPACE_7],
- getValue ("workspace_7_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_WORKSPACE_8],
- getValue ("workspace_8_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_WORKSPACE_9],
- getValue ("workspace_9_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_NEXT_WORKSPACE],
- getValue ("move_window_next_workspace_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_PREV_WORKSPACE],
- getValue ("move_window_prev_workspace_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_WORKSPACE_1],
- getValue ("move_window_workspace_1_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_WORKSPACE_2],
- getValue ("move_window_workspace_2_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_WORKSPACE_3],
- getValue ("move_window_workspace_3_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_WORKSPACE_4],
- getValue ("move_window_workspace_4_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_WORKSPACE_5],
- getValue ("move_window_workspace_5_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_WORKSPACE_6],
- getValue ("move_window_workspace_6_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_WORKSPACE_7],
- getValue ("move_window_workspace_7_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_WORKSPACE_8],
- getValue ("move_window_workspace_8_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_MOVE_WORKSPACE_9],
- getValue ("move_window_workspace_9_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_SHORTCUT_1],
- getValue ("shortcut_1_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_SHORTCUT_2],
- getValue ("shortcut_2_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_SHORTCUT_3],
- getValue ("shortcut_3_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_SHORTCUT_4],
- getValue ("shortcut_4_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_SHORTCUT_5],
- getValue ("shortcut_5_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_SHORTCUT_6],
- getValue ("shortcut_6_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_SHORTCUT_7],
- getValue ("shortcut_7_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_SHORTCUT_8],
- getValue ("shortcut_8_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_SHORTCUT_9],
- getValue ("shortcut_9_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_SHORTCUT_10],
- getValue ("shortcut_10_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_RAISE_WINDOW],
- getValue ("raise_window_key", rc));
- parseKeyString (md->dpy, &params.keys[KEY_LOWER_WINDOW],
- getValue ("lower_window_key", rc));
- ungrabKeys (md->dpy, md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_CYCLE_WINDOWS], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_NEXT_WORKSPACE], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_PREV_WORKSPACE], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_ADD_WORKSPACE], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_NEXT_WORKSPACE], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_WORKSPACE_1], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_WORKSPACE_2], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_WORKSPACE_3], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_WORKSPACE_4], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_WORKSPACE_5], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_WORKSPACE_6], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_WORKSPACE_7], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_WORKSPACE_8], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_WORKSPACE_9], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_SHORTCUT_1], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_SHORTCUT_2], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_SHORTCUT_3], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_SHORTCUT_4], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_SHORTCUT_5], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_SHORTCUT_6], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_SHORTCUT_7], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_SHORTCUT_8], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_SHORTCUT_9], md->gnome_win);
- grabKey (md->dpy, &params.keys[KEY_SHORTCUT_10], md->gnome_win);
+ loadShortcutCmd (screen_info, rc);
+
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_UP], getValue ("move_window_up_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_DOWN], getValue ("move_window_down_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_LEFT], getValue ("move_window_left_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_RIGHT], getValue ("move_window_right_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_RESIZE_UP], getValue ("resize_window_up_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_RESIZE_DOWN], getValue ("resize_window_down_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_RESIZE_LEFT], getValue ("resize_window_left_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_RESIZE_RIGHT], getValue ("resize_window_right_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_CYCLE_WINDOWS], getValue ("cycle_windows_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_CLOSE_WINDOW], getValue ("close_window_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_HIDE_WINDOW], getValue ("hide_window_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MAXIMIZE_WINDOW], getValue ("maximize_window_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MAXIMIZE_VERT], getValue ("maximize_vert_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MAXIMIZE_HORIZ], getValue ("maximize_horiz_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_SHADE_WINDOW], getValue ("shade_window_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_NEXT_WORKSPACE], getValue ("next_workspace_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_PREV_WORKSPACE], getValue ("prev_workspace_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_ADD_WORKSPACE], getValue ("add_workspace_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_DEL_WORKSPACE], getValue ("del_workspace_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_STICK_WINDOW], getValue ("stick_window_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_WORKSPACE_1], getValue ("workspace_1_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_WORKSPACE_2], getValue ("workspace_2_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_WORKSPACE_3], getValue ("workspace_3_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_WORKSPACE_4], getValue ("workspace_4_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_WORKSPACE_5], getValue ("workspace_5_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_WORKSPACE_6], getValue ("workspace_6_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_WORKSPACE_7], getValue ("workspace_7_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_WORKSPACE_8], getValue ("workspace_8_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_WORKSPACE_9], getValue ("workspace_9_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_NEXT_WORKSPACE], getValue ("move_window_next_workspace_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_PREV_WORKSPACE], getValue ("move_window_prev_workspace_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_1], getValue ("move_window_workspace_1_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_2], getValue ("move_window_workspace_2_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_3], getValue ("move_window_workspace_3_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_4], getValue ("move_window_workspace_4_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_5], getValue ("move_window_workspace_5_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_6], getValue ("move_window_workspace_6_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_7], getValue ("move_window_workspace_7_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_8], getValue ("move_window_workspace_8_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_WORKSPACE_9], getValue ("move_window_workspace_9_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_SHORTCUT_1], getValue ("shortcut_1_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_SHORTCUT_2], getValue ("shortcut_2_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_SHORTCUT_3], getValue ("shortcut_3_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_SHORTCUT_4], getValue ("shortcut_4_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_SHORTCUT_5], getValue ("shortcut_5_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_SHORTCUT_6], getValue ("shortcut_6_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_SHORTCUT_7], getValue ("shortcut_7_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_SHORTCUT_8], getValue ("shortcut_8_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_SHORTCUT_9], getValue ("shortcut_9_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_SHORTCUT_10], getValue ("shortcut_10_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_RAISE_WINDOW], getValue ("raise_window_key", rc));
+ parseKeyString (dpy, &screen_info->params->keys[KEY_LOWER_WINDOW], getValue ("lower_window_key", rc));
+
+ ungrabKeys (dpy, screen_info->gnome_win);
+ grabKey (dpy, &screen_info->params->keys[KEY_CYCLE_WINDOWS], screen_info->gnome_win);
+ grabKey (dpy, &screen_info->params->keys[KEY_NEXT_WORKSPACE], screen_info->gnome_win);
+ grabKey (dpy, &screen_info->params->keys[KEY_PREV_WORKSPACE], screen_info->gnome_win);
+ grabKey (dpy, &screen_info->params->keys[KEY_ADD_WORKSPACE], screen_info->gnome_win);
+ grabKey (dpy, &screen_info->params->keys[KEY_NEXT_WORKSPACE], screen_info->gnome_win);
+ grabKey (dpy, &screen_info->params->keys[KEY_WORKSPACE_1], screen_info->gnome_win);
+ grabKey (dpy, &screen_info->params->keys[KEY_WORKSPACE_2], screen_info->gnome_win);
+ grabKey (dpy, &screen_info->params->keys[KEY_WORKSPACE_3], screen_info->gnome_win);
+ grabKey (dpy, &screen_info->params->keys[KEY_WORKSPACE_4], screen_info->gnome_win);
+ grabKey (dpy, &screen_info->params->keys[KEY_WORKSPACE_5], screen_info->gnome_win);
+ grabKey (dpy, &screen_info->params->keys[KEY_WORKSPACE_6], screen_info->gnome_win);
+ grabKey (dpy, &screen_info->params->keys[KEY_WORKSPACE_7], screen_info->gnome_win);
+ grabKey (dpy, &screen_info->params->keys[KEY_WORKSPACE_8], screen_info->gnome_win);
+ grabKey (dpy, &screen_info->params->keys[KEY_WORKSPACE_9], screen_info->gnome_win);
+ grabKey (dpy, &screen_info->params->keys[KEY_SHORTCUT_1], screen_info->gnome_win);
+ grabKey (dpy, &screen_info->params->keys[KEY_SHORTCUT_2], screen_info->gnome_win);
+ grabKey (dpy, &screen_info->params->keys[KEY_SHORTCUT_3], screen_info->gnome_win);
+ grabKey (dpy, &screen_info->params->keys[KEY_SHORTCUT_4], screen_info->gnome_win);
+ grabKey (dpy, &screen_info->params->keys[KEY_SHORTCUT_5], screen_info->gnome_win);
+ grabKey (dpy, &screen_info->params->keys[KEY_SHORTCUT_6], screen_info->gnome_win);
+ grabKey (dpy, &screen_info->params->keys[KEY_SHORTCUT_7], screen_info->gnome_win);
+ grabKey (dpy, &screen_info->params->keys[KEY_SHORTCUT_8], screen_info->gnome_win);
+ grabKey (dpy, &screen_info->params->keys[KEY_SHORTCUT_9], screen_info->gnome_win);
+ grabKey (dpy, &screen_info->params->keys[KEY_SHORTCUT_10], screen_info->gnome_win);
return TRUE;
}
gboolean
-loadSettings (ScreenData *md)
+loadSettings (ScreenInfo *screen_info)
{
Settings rc[] = {
/* Do not chnage the order of the following parameters */
@@ -1068,78 +1052,69 @@ loadSettings (ScreenData *md)
{"lower_window_key", NULL, TRUE},
{NULL, NULL, FALSE}
};
- GValue tmp_val = { 0, };
TRACE ("entering loadSettings");
- loadRcData (md, rc);
- loadMcsData (md, rc);
- loadTheme (md, rc);
+ loadRcData (screen_info, rc);
+ loadMcsData (screen_info, rc);
+ loadTheme (screen_info, rc);
- if (!loadKeyBindings (md, rc))
+ if (!loadKeyBindings (screen_info, rc))
{
freeRc (rc);
return FALSE;
}
- params.box_resize =
+ screen_info->params->box_resize =
!g_ascii_strcasecmp ("true", getValue ("box_resize", rc));
- params.box_move = !g_ascii_strcasecmp ("true", getValue ("box_move", rc));
+ screen_info->params->box_move = !g_ascii_strcasecmp ("true", getValue ("box_move", rc));
- params.click_to_focus =
+ screen_info->params->click_to_focus =
!g_ascii_strcasecmp ("true", getValue ("click_to_focus", rc));
- params.easy_click =
+ screen_info->params->easy_click =
!g_ascii_strcasecmp ("true", getValue ("easy_click", rc));
- params.cycle_minimum =
+ screen_info->params->cycle_minimum =
!g_ascii_strcasecmp ("true", getValue ("cycle_minimum", rc));
- params.focus_hint =
+ screen_info->params->focus_hint =
!g_ascii_strcasecmp ("true", getValue ("focus_hint", rc));
- params.focus_new =
+ screen_info->params->focus_new =
!g_ascii_strcasecmp ("true", getValue ("focus_new", rc));
- params.raise_on_focus =
+ screen_info->params->raise_on_focus =
!g_ascii_strcasecmp ("true", getValue ("raise_on_focus", rc));
- params.raise_delay = abs (TOINT (getValue ("raise_delay", rc)));
- params.raise_on_click =
+ screen_info->params->raise_delay = abs (TOINT (getValue ("raise_delay", rc)));
+ screen_info->params->raise_on_click =
!g_ascii_strcasecmp ("true", getValue ("raise_on_click", rc));
- params.snap_to_border =
+ screen_info->params->snap_to_border =
!g_ascii_strcasecmp ("true", getValue ("snap_to_border", rc));
- params.snap_to_windows =
+ screen_info->params->snap_to_windows =
!g_ascii_strcasecmp ("true", getValue ("snap_to_windows", rc));
- params.snap_width = abs (TOINT (getValue ("snap_width", rc)));
- params.dbl_click_time = abs (TOINT (getValue ("dbl_click_time", rc)));
+ screen_info->params->snap_width = abs (TOINT (getValue ("snap_width", rc)));
- set_settings_margin (md, LEFT, TOINT (getValue ("margin_left", rc)));
- set_settings_margin (md, RIGHT, TOINT (getValue ("margin_right", rc)));
- set_settings_margin (md, BOTTOM, TOINT (getValue ("margin_bottom", rc)));
- set_settings_margin (md, TOP, TOINT (getValue ("margin_top", rc)));
- g_value_init (&tmp_val, G_TYPE_INT);
- if (gdk_setting_get ("gtk-double-click-time", &tmp_val))
- {
- params.dbl_click_time = abs (g_value_get_int (&tmp_val));
- }
+ set_settings_margin (screen_info, LEFT, TOINT (getValue ("margin_left", rc)));
+ set_settings_margin (screen_info, RIGHT, TOINT (getValue ("margin_right", rc)));
+ set_settings_margin (screen_info, BOTTOM, TOINT (getValue ("margin_bottom", rc)));
+ set_settings_margin (screen_info, TOP, TOINT (getValue ("margin_top", rc)));
if (!g_ascii_strcasecmp ("shade", getValue ("double_click_action", rc)))
{
- params.double_click_action = ACTION_SHADE;
+ screen_info->params->double_click_action = ACTION_SHADE;
}
- else if (!g_ascii_strcasecmp ("hide", getValue ("double_click_action",
- rc)))
+ else if (!g_ascii_strcasecmp ("hide", getValue ("double_click_action", rc)))
{
- params.double_click_action = ACTION_HIDE;
+ screen_info->params->double_click_action = ACTION_HIDE;
}
- else if (!g_ascii_strcasecmp ("maximize", getValue ("double_click_action",
- rc)))
+ else if (!g_ascii_strcasecmp ("maximize", getValue ("double_click_action", rc)))
{
- params.double_click_action = ACTION_MAXIMIZE;
+ screen_info->params->double_click_action = ACTION_MAXIMIZE;
}
else
{
- params.double_click_action = ACTION_NONE;
+ screen_info->params->double_click_action = ACTION_NONE;
}
- if (params.workspace_count < 0)
+ if (screen_info->workspace_count < 0)
{
gint workspace_count;
workspace_count = abs (TOINT (getValue ("workspace_count", rc)));
@@ -1147,173 +1122,192 @@ loadSettings (ScreenData *md)
{
workspace_count = 0;
}
- g_message (_("%s: Workspace count not set, using rc value: %i"),
- g_get_prgname (), workspace_count);
- workspaceSetCount (md, workspace_count);
+ g_message (_("%s: Workspace count not set, using rc value: %i"), g_get_prgname (), workspace_count);
+ workspaceSetCount (screen_info, workspace_count);
}
- params.wrap_workspaces =
+ screen_info->params->wrap_workspaces =
!g_ascii_strcasecmp ("true", getValue ("wrap_workspaces", rc));
- params.wrap_windows =
+ screen_info->params->wrap_windows =
!g_ascii_strcasecmp ("true", getValue ("wrap_windows", rc));
- params.wrap_resistance = abs (TOINT (getValue ("wrap_resistance", rc)));
+ screen_info->params->wrap_resistance = abs (TOINT (getValue ("wrap_resistance", rc)));
freeRc (rc);
return TRUE;
}
static void
-unloadTheme (ScreenData *md)
+unloadTheme (ScreenInfo *screen_info)
{
+ DisplayInfo *display_info = screen_info->display_info;
+ GSList *screens;
int i;
+
TRACE ("entering unloadTheme");
for (i = 0; i < 3; i++)
{
- myPixmapFree (&params.sides[i][ACTIVE]);
- myPixmapFree (&params.sides[i][INACTIVE]);
+ xfwmPixmapFree (&screen_info->sides[i][ACTIVE]);
+ xfwmPixmapFree (&screen_info->sides[i][INACTIVE]);
}
for (i = 0; i < 4; i++)
{
- myPixmapFree (&params.corners[i][ACTIVE]);
- myPixmapFree (&params.corners[i][INACTIVE]);
+ xfwmPixmapFree (&screen_info->corners[i][ACTIVE]);
+ xfwmPixmapFree (&screen_info->corners[i][INACTIVE]);
}
for (i = 0; i < BUTTON_COUNT; i++)
{
- myPixmapFree (&params.buttons[i][ACTIVE]);
- myPixmapFree (&params.buttons[i][INACTIVE]);
- myPixmapFree (&params.buttons[i][PRESSED]);
- myPixmapFree (&params.buttons[i][T_ACTIVE]);
- myPixmapFree (&params.buttons[i][T_INACTIVE]);
- myPixmapFree (&params.buttons[i][T_PRESSED]);
+ xfwmPixmapFree (&screen_info->buttons[i][ACTIVE]);
+ xfwmPixmapFree (&screen_info->buttons[i][INACTIVE]);
+ xfwmPixmapFree (&screen_info->buttons[i][PRESSED]);
+ xfwmPixmapFree (&screen_info->buttons[i][T_ACTIVE]);
+ xfwmPixmapFree (&screen_info->buttons[i][T_INACTIVE]);
+ xfwmPixmapFree (&screen_info->buttons[i][T_PRESSED]);
}
for (i = 0; i < 5; i++)
{
- myPixmapFree (&params.title[i][ACTIVE]);
- myPixmapFree (&params.title[i][INACTIVE]);
+ xfwmPixmapFree (&screen_info->title[i][ACTIVE]);
+ xfwmPixmapFree (&screen_info->title[i][INACTIVE]);
}
- if (params.box_gc != None)
+ if (screen_info->box_gc != None)
{
- XFreeGC (md->dpy, params.box_gc);
- params.box_gc = None;
+ XFreeGC (myScreenGetXDisplay (screen_info), screen_info->box_gc);
+ screen_info->box_gc = None;
}
}
-gboolean
-reloadSettings (ScreenData *md, int mask)
+static void
+unloadSettings (ScreenInfo *screen_info)
{
- TRACE ("entering reloadSettings");
+ int i;
+
+ g_return_if_fail (screen_info);
+
+ TRACE ("entering unloadSettings");
+
+ unloadTheme (screen_info);
+
+ for (i = 0; i < NB_KEY_SHORTCUTS; i++)
+ {
+ if (screen_info->params->shortcut_exec[i])
+ {
+ g_free (screen_info->params->shortcut_exec[i]);
+ screen_info->params->shortcut_exec[i] = NULL;
+ }
+ }
+}
+
+static gboolean
+reloadScreenSettings (ScreenInfo *screen_info, int mask)
+{
+ g_return_val_if_fail (screen_info, FALSE);
- unloadTheme (md);
- if (!loadSettings (md))
+ unloadTheme (screen_info);
+ if (!loadSettings (screen_info))
{
return FALSE;
}
if (mask)
{
- clientUpdateAllFrames (md, mask);
+ clientUpdateAllFrames (screen_info, mask);
}
return TRUE;
}
gboolean
-initSettings (ScreenData *md)
+reloadSettings (DisplayInfo *display_info, int mask)
+{
+ GSList *screens;
+
+ g_return_if_fail (display_info);
+
+ TRACE ("entering reloadSettings");
+
+ /* Refresh all screens, not just one */
+ for (screens = display_info->screens; screens; screens = g_slist_next (screens))
+ {
+ ScreenInfo *screen_info = (ScreenInfo *) screens->data;
+ if (!reloadScreenSettings (screen_info, mask))
+ {
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+gboolean
+initSettings (ScreenInfo *screen_info)
{
int i;
long val = 0;
char *names = NULL;
+ g_return_if_fail (screen_info);
+
TRACE ("entering initSettings");
- mcs_initted = FALSE;
- params.box_gc = None;
- params.black_gc = NULL;
- params.white_gc = NULL;
- params.title_colors[ACTIVE].gc = NULL;
- params.title_colors[ACTIVE].allocated = FALSE;
- params.title_colors[INACTIVE].gc = NULL;
- params.title_colors[INACTIVE].allocated = FALSE;
- params.workspace_count = -1;
-
for (i = 0; i < NB_KEY_SHORTCUTS; i++)
{
- params.shortcut_exec[i] = NULL;
- }
- for (i = 0; i < 3; i++)
- {
- myPixmapInit (&params.sides[i][ACTIVE]);
- myPixmapInit (&params.sides[i][INACTIVE]);
- }
- for (i = 0; i < 4; i++)
- {
- myPixmapInit (&params.corners[i][ACTIVE]);
- myPixmapInit (&params.corners[i][INACTIVE]);
+ screen_info->params->shortcut_exec[i] = NULL;
}
- for (i = 0; i < BUTTON_COUNT; i++)
- {
- myPixmapInit (&params.buttons[i][ACTIVE]);
- myPixmapInit (&params.buttons[i][INACTIVE]);
- myPixmapInit (&params.buttons[i][PRESSED]);
- myPixmapInit (&params.buttons[i][T_ACTIVE]);
- myPixmapInit (&params.buttons[i][T_INACTIVE]);
- myPixmapInit (&params.buttons[i][T_PRESSED]);
- }
- for (i = 0; i < 5; i++)
- {
- myPixmapInit (&params.title[i][ACTIVE]);
- myPixmapInit (&params.title[i][INACTIVE]);
- }
- if (!mcs_client_check_manager (md->dpy, md->screen, "xfce-mcs-manager"))
+ if (!mcs_client_check_manager (myScreenGetXDisplay (screen_info), screen_info->screen, "xfce-mcs-manager"))
{
- g_warning ("MCS manager not running");
+ g_warning ("MCS manager not running, startup delayed for 5 seconds");
+ sleep (5);
}
- client = mcs_client_new (md->dpy, md->screen, notify_cb, watch_cb, (gpointer) md);
- if (client)
+ screen_info->mcs_client = mcs_client_new (myScreenGetXDisplay (screen_info), screen_info->screen, notify_cb, watch_cb, (gpointer) screen_info);
+ if (screen_info->mcs_client)
{
- mcs_client_add_channel (client, CHANNEL1);
- mcs_client_add_channel (client, CHANNEL2);
- mcs_client_add_channel (client, CHANNEL3);
+ mcs_client_add_channel (screen_info->mcs_client, CHANNEL1);
+ mcs_client_add_channel (screen_info->mcs_client, CHANNEL2);
+ mcs_client_add_channel (screen_info->mcs_client, CHANNEL3);
}
else
{
g_warning ("Cannot create MCS client channel");
}
- mcs_initted = TRUE;
+ screen_info->mcs_initted = TRUE;
- if (getHint (md->dpy, md->xroot, net_number_of_desktops, &val))
+ if (getHint (myScreenGetXDisplay (screen_info), screen_info->xroot, net_number_of_desktops, &val))
{
- workspaceSetCount (md, val);
+ workspaceSetCount (screen_info, val);
}
- else if (getHint (md->dpy, md->xroot, win_workspace_count, &val))
+ else if (getHint (myScreenGetXDisplay (screen_info), screen_info->xroot, win_workspace_count, &val))
{
- workspaceSetCount (md, val);
+ workspaceSetCount (screen_info, val);
}
- if (getUTF8String (md->dpy, md->xroot, net_desktop_names, &names, &i))
+ if (getUTF8String (myScreenGetXDisplay (screen_info), screen_info->xroot, net_desktop_names, &names, &i))
{
- workspaceSetNames (names, i);
+ workspaceSetNames (screen_info, names, i);
}
else
{
- params.workspace_names = NULL;
- params.workspace_names_length = 0;
+ screen_info->workspace_names = NULL;
+ screen_info->workspace_names_length = 0;
}
- if (!loadSettings (md))
+ if (!loadSettings (screen_info))
{
return FALSE;
}
- placeSidewalks (md, params.wrap_workspaces);
+ placeSidewalks (screen_info, screen_info->params->wrap_workspaces);
return TRUE;
}
void
-unloadSettings (ScreenData *md)
+closeSettings (ScreenInfo *screen_info)
{
- TRACE ("entering unloadSettings");
-
- unloadTheme (md);
+ g_return_if_fail (screen_info);
+
+ if (screen_info->mcs_client)
+ {
+ mcs_client_destroy (screen_info->mcs_client);
+ screen_info->mcs_client = NULL;
+ }
+ unloadSettings (screen_info);
}