diff options
Diffstat (limited to 'src/settings.c')
-rw-r--r-- | src/settings.c | 904 |
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), - ¶ms.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, ¶ms.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), - ¶ms.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, - ¶ms.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), - ¶ms.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, ¶ms.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), - ¶ms.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, - ¶ms.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, ¶ms.sides[SIDE_LEFT][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->sides[SIDE_LEFT][ACTIVE], theme, "left-active", colsym, 20); - myPixmapLoad (md, ¶ms.sides[SIDE_LEFT][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->sides[SIDE_LEFT][INACTIVE], theme, "left-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.sides[SIDE_RIGHT][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->sides[SIDE_RIGHT][ACTIVE], theme, "right-active", colsym, 20); - myPixmapLoad (md, ¶ms.sides[SIDE_RIGHT][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->sides[SIDE_RIGHT][INACTIVE], theme, "right-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.sides[SIDE_BOTTOM][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->sides[SIDE_BOTTOM][ACTIVE], theme, "bottom-active", colsym, 20); - myPixmapLoad (md, ¶ms.sides[SIDE_BOTTOM][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->sides[SIDE_BOTTOM][INACTIVE], theme, "bottom-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.corners[CORNER_TOP_LEFT][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_TOP_LEFT][ACTIVE], theme, "top-left-active", colsym, 20); - myPixmapLoad (md, ¶ms.corners[CORNER_TOP_LEFT][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_TOP_LEFT][INACTIVE], theme, "top-left-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.corners[CORNER_TOP_RIGHT][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_TOP_RIGHT][ACTIVE], theme, "top-right-active", colsym, 20); - myPixmapLoad (md, ¶ms.corners[CORNER_TOP_RIGHT][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_TOP_RIGHT][INACTIVE], theme, "top-right-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.corners[CORNER_BOTTOM_LEFT][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_BOTTOM_LEFT][ACTIVE], theme, "bottom-left-active", colsym, 20); - myPixmapLoad (md, ¶ms.corners[CORNER_BOTTOM_LEFT][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_BOTTOM_LEFT][INACTIVE], theme, "bottom-left-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.corners[CORNER_BOTTOM_RIGHT][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_BOTTOM_RIGHT][ACTIVE], theme, "bottom-right-active", colsym, 20); - myPixmapLoad (md, ¶ms.corners[CORNER_BOTTOM_RIGHT][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->corners[CORNER_BOTTOM_RIGHT][INACTIVE], theme, "bottom-right-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[HIDE_BUTTON][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[HIDE_BUTTON][ACTIVE], theme, "hide-active", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[HIDE_BUTTON][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[HIDE_BUTTON][INACTIVE], theme, "hide-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[HIDE_BUTTON][PRESSED], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[HIDE_BUTTON][PRESSED], theme, "hide-pressed", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[CLOSE_BUTTON][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[CLOSE_BUTTON][ACTIVE], theme, "close-active", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[CLOSE_BUTTON][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[CLOSE_BUTTON][INACTIVE], theme, "close-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[CLOSE_BUTTON][PRESSED], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[CLOSE_BUTTON][PRESSED], theme, "close-pressed", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[MAXIMIZE_BUTTON][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[MAXIMIZE_BUTTON][ACTIVE], theme, "maximize-active", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[MAXIMIZE_BUTTON][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[MAXIMIZE_BUTTON][INACTIVE], theme, "maximize-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[MAXIMIZE_BUTTON][PRESSED], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[MAXIMIZE_BUTTON][PRESSED], theme, "maximize-pressed", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[SHADE_BUTTON][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[SHADE_BUTTON][ACTIVE], theme, "shade-active", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[SHADE_BUTTON][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[SHADE_BUTTON][INACTIVE], theme, "shade-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[SHADE_BUTTON][PRESSED], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[SHADE_BUTTON][PRESSED], theme, "shade-pressed", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[STICK_BUTTON][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[STICK_BUTTON][ACTIVE], theme, "stick-active", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[STICK_BUTTON][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[STICK_BUTTON][INACTIVE], theme, "stick-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[STICK_BUTTON][PRESSED], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[STICK_BUTTON][PRESSED], theme, "stick-pressed", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[MENU_BUTTON][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[MENU_BUTTON][ACTIVE], theme, "menu-active", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[MENU_BUTTON][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[MENU_BUTTON][INACTIVE], theme, "menu-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[MENU_BUTTON][PRESSED], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[MENU_BUTTON][PRESSED], theme, "menu-pressed", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[SHADE_BUTTON][T_ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[SHADE_BUTTON][T_ACTIVE], theme, "shade-toggled-active", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[SHADE_BUTTON][T_INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[SHADE_BUTTON][T_INACTIVE], theme, "shade-toggled-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[SHADE_BUTTON][T_PRESSED], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[SHADE_BUTTON][T_PRESSED], theme, "shade-toggled-pressed", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[STICK_BUTTON][T_ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[STICK_BUTTON][T_ACTIVE], theme, "stick-toggled-active", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[STICK_BUTTON][T_INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[STICK_BUTTON][T_INACTIVE], theme, "stick-toggled-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[STICK_BUTTON][T_PRESSED], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[STICK_BUTTON][T_PRESSED], theme, "stick-toggled-pressed", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[MAXIMIZE_BUTTON][T_ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[MAXIMIZE_BUTTON][T_ACTIVE], theme, "maximize-toggled-active", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[MAXIMIZE_BUTTON][T_INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[MAXIMIZE_BUTTON][T_INACTIVE], theme, "maximize-toggled-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.buttons[MAXIMIZE_BUTTON][T_PRESSED], theme, + xfwmPixmapLoad (screen_info, &screen_info->buttons[MAXIMIZE_BUTTON][T_PRESSED], theme, "maximize-toggled-pressed", colsym, 20); - myPixmapLoad (md, ¶ms.title[TITLE_1][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_1][ACTIVE], theme, "title-1-active", colsym, 20); - myPixmapLoad (md, ¶ms.title[TITLE_1][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_1][INACTIVE], theme, "title-1-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.title[TITLE_2][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_2][ACTIVE], theme, "title-2-active", colsym, 20); - myPixmapLoad (md, ¶ms.title[TITLE_2][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_2][INACTIVE], theme, "title-2-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.title[TITLE_3][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_3][ACTIVE], theme, "title-3-active", colsym, 20); - myPixmapLoad (md, ¶ms.title[TITLE_3][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_3][INACTIVE], theme, "title-3-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.title[TITLE_4][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_4][ACTIVE], theme, "title-4-active", colsym, 20); - myPixmapLoad (md, ¶ms.title[TITLE_4][INACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_4][INACTIVE], theme, "title-4-inactive", colsym, 20); - myPixmapLoad (md, ¶ms.title[TITLE_5][ACTIVE], theme, + xfwmPixmapLoad (screen_info, &screen_info->title[TITLE_5][ACTIVE], theme, "title-5-active", colsym, 20); - myPixmapLoad (md, ¶ms.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, ¶ms.keys[KEY_MOVE_UP], - getValue ("move_window_up_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_DOWN], - getValue ("move_window_down_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_LEFT], - getValue ("move_window_left_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_RIGHT], - getValue ("move_window_right_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_RESIZE_UP], - getValue ("resize_window_up_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_RESIZE_DOWN], - getValue ("resize_window_down_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_RESIZE_LEFT], - getValue ("resize_window_left_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_RESIZE_RIGHT], - getValue ("resize_window_right_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_CYCLE_WINDOWS], - getValue ("cycle_windows_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_CLOSE_WINDOW], - getValue ("close_window_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_HIDE_WINDOW], - getValue ("hide_window_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MAXIMIZE_WINDOW], - getValue ("maximize_window_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MAXIMIZE_VERT], - getValue ("maximize_vert_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MAXIMIZE_HORIZ], - getValue ("maximize_horiz_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_SHADE_WINDOW], - getValue ("shade_window_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_NEXT_WORKSPACE], - getValue ("next_workspace_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_PREV_WORKSPACE], - getValue ("prev_workspace_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_ADD_WORKSPACE], - getValue ("add_workspace_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_DEL_WORKSPACE], - getValue ("del_workspace_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_STICK_WINDOW], - getValue ("stick_window_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_WORKSPACE_1], - getValue ("workspace_1_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_WORKSPACE_2], - getValue ("workspace_2_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_WORKSPACE_3], - getValue ("workspace_3_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_WORKSPACE_4], - getValue ("workspace_4_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_WORKSPACE_5], - getValue ("workspace_5_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_WORKSPACE_6], - getValue ("workspace_6_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_WORKSPACE_7], - getValue ("workspace_7_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_WORKSPACE_8], - getValue ("workspace_8_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_WORKSPACE_9], - getValue ("workspace_9_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_NEXT_WORKSPACE], - getValue ("move_window_next_workspace_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_PREV_WORKSPACE], - getValue ("move_window_prev_workspace_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_WORKSPACE_1], - getValue ("move_window_workspace_1_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_WORKSPACE_2], - getValue ("move_window_workspace_2_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_WORKSPACE_3], - getValue ("move_window_workspace_3_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_WORKSPACE_4], - getValue ("move_window_workspace_4_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_WORKSPACE_5], - getValue ("move_window_workspace_5_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_WORKSPACE_6], - getValue ("move_window_workspace_6_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_WORKSPACE_7], - getValue ("move_window_workspace_7_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_WORKSPACE_8], - getValue ("move_window_workspace_8_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_MOVE_WORKSPACE_9], - getValue ("move_window_workspace_9_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_SHORTCUT_1], - getValue ("shortcut_1_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_SHORTCUT_2], - getValue ("shortcut_2_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_SHORTCUT_3], - getValue ("shortcut_3_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_SHORTCUT_4], - getValue ("shortcut_4_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_SHORTCUT_5], - getValue ("shortcut_5_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_SHORTCUT_6], - getValue ("shortcut_6_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_SHORTCUT_7], - getValue ("shortcut_7_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_SHORTCUT_8], - getValue ("shortcut_8_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_SHORTCUT_9], - getValue ("shortcut_9_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_SHORTCUT_10], - getValue ("shortcut_10_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_RAISE_WINDOW], - getValue ("raise_window_key", rc)); - parseKeyString (md->dpy, ¶ms.keys[KEY_LOWER_WINDOW], - getValue ("lower_window_key", rc)); - ungrabKeys (md->dpy, md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_CYCLE_WINDOWS], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_NEXT_WORKSPACE], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_PREV_WORKSPACE], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_ADD_WORKSPACE], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_NEXT_WORKSPACE], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_WORKSPACE_1], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_WORKSPACE_2], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_WORKSPACE_3], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_WORKSPACE_4], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_WORKSPACE_5], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_WORKSPACE_6], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_WORKSPACE_7], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_WORKSPACE_8], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_WORKSPACE_9], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_SHORTCUT_1], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_SHORTCUT_2], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_SHORTCUT_3], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_SHORTCUT_4], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_SHORTCUT_5], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_SHORTCUT_6], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_SHORTCUT_7], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_SHORTCUT_8], md->gnome_win); - grabKey (md->dpy, ¶ms.keys[KEY_SHORTCUT_9], md->gnome_win); - grabKey (md->dpy, ¶ms.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 (¶ms.sides[i][ACTIVE]); - myPixmapFree (¶ms.sides[i][INACTIVE]); + xfwmPixmapFree (&screen_info->sides[i][ACTIVE]); + xfwmPixmapFree (&screen_info->sides[i][INACTIVE]); } for (i = 0; i < 4; i++) { - myPixmapFree (¶ms.corners[i][ACTIVE]); - myPixmapFree (¶ms.corners[i][INACTIVE]); + xfwmPixmapFree (&screen_info->corners[i][ACTIVE]); + xfwmPixmapFree (&screen_info->corners[i][INACTIVE]); } for (i = 0; i < BUTTON_COUNT; i++) { - myPixmapFree (¶ms.buttons[i][ACTIVE]); - myPixmapFree (¶ms.buttons[i][INACTIVE]); - myPixmapFree (¶ms.buttons[i][PRESSED]); - myPixmapFree (¶ms.buttons[i][T_ACTIVE]); - myPixmapFree (¶ms.buttons[i][T_INACTIVE]); - myPixmapFree (¶ms.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 (¶ms.title[i][ACTIVE]); - myPixmapFree (¶ms.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 (¶ms.sides[i][ACTIVE]); - myPixmapInit (¶ms.sides[i][INACTIVE]); - } - for (i = 0; i < 4; i++) - { - myPixmapInit (¶ms.corners[i][ACTIVE]); - myPixmapInit (¶ms.corners[i][INACTIVE]); + screen_info->params->shortcut_exec[i] = NULL; } - for (i = 0; i < BUTTON_COUNT; i++) - { - myPixmapInit (¶ms.buttons[i][ACTIVE]); - myPixmapInit (¶ms.buttons[i][INACTIVE]); - myPixmapInit (¶ms.buttons[i][PRESSED]); - myPixmapInit (¶ms.buttons[i][T_ACTIVE]); - myPixmapInit (¶ms.buttons[i][T_INACTIVE]); - myPixmapInit (¶ms.buttons[i][T_PRESSED]); - } - for (i = 0; i < 5; i++) - { - myPixmapInit (¶ms.title[i][ACTIVE]); - myPixmapInit (¶ms.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); } |