Make clang happier Add asserts to default: in switch statements Store pointed to variables locally so it knows they don't change Remove some dead assignments Mark ob_exit_with_error as noreturn Use "%s", msg instead of just msg to printf style functions Use the c_pfocus variable
jump to
@@ -99,7 +99,7 @@ ObtParseCallback func, gpointer data)
{ struct Callback *c; - if ((c = g_hash_table_lookup(i->callbacks, tag))) { + if (g_hash_table_lookup(i->callbacks, tag)) { g_error("Tag '%s' already registered", tag); return; }
@@ -179,6 +179,8 @@ case RELATIVE:
d = screen_find_desktop(screen_desktop, o->u.rel.dir, o->u.rel.wrap, o->u.rel.linear); break; + default: + g_assert_not_reached(); } if (d < screen_num_desktops && d != screen_desktop) {
@@ -42,15 +42,15 @@ ObClient *c;
gint x, y, lw, lh, w, h; c = data->client; - x = data->client->area.x + o->x; - y = data->client->area.y + o->y; - w = data->client->area.width; - h = data->client->area.height; - client_try_configure(data->client, &x, &y, &w, &h, &lw, &lh, TRUE); - client_find_onscreen(data->client, &x, &y, w, h, FALSE); + x = c->area.x + o->x; + y = c->area.y + o->y; + w = c->area.width; + h = c->area.height; + client_try_configure(c, &x, &y, &w, &h, &lw, &lh, TRUE); + client_find_onscreen(c, &x, &y, w, h, FALSE); actions_client_move(data, TRUE); - client_configure(data->client, x, y, w, h, TRUE, TRUE, FALSE); + client_configure(c, x, y, w, h, TRUE, TRUE, FALSE); actions_client_move(data, FALSE); }
@@ -33,9 +33,9 @@ }
static gboolean prompt_cb(ObPrompt *p, gint result, gpointer data) { - Options *o = data; if (result) { #ifdef USE_SM + Options *o = data; session_request_logout(o->silent); #else /* TRANSLATORS: Don't translate the word "SessionLogout" as it's the
@@ -2378,7 +2378,7 @@ GSList *it;
for (it = self->parents; it; it = g_slist_next(it)) { ObClient *c = it->data; - if ((c = client_search_focus_tree_full(it->data))) return c; + if ((c = client_search_focus_tree_full(c))) return c; } return NULL;@@ -3639,6 +3639,8 @@ else if (state == OBT_PROP_ATOM(NET_WM_STATE_DEMANDS_ATTENTION))
value = self->demands_attention; else if (state == OBT_PROP_ATOM(OB_WM_STATE_UNDECORATED)) value = undecorated; + else + g_assert_not_reached(); action = value ? OBT_PROP_ATOM(NET_WM_STATE_REMOVE) : OBT_PROP_ATOM(NET_WM_STATE_ADD); }
@@ -200,7 +200,7 @@ gboolean name_set, class_set, type_set;
gboolean x_pos_given; while (app) { - name_set = class_set = type_set = x_pos_given = FALSE; + x_pos_given = FALSE; class_set = obt_parse_attr_string(app, "class", &class); name_set = obt_parse_attr_string(app, "name", &name);
@@ -161,7 +161,7 @@ message = g_strconcat(prefix, message, NULL);
g_free(a); } - g_debug(message); + g_debug("%s", message); g_free(message); }
@@ -417,6 +417,7 @@ case NotifyNormal: modestr="NotifyNormal"; break;
case NotifyGrab: modestr="NotifyGrab"; break; case NotifyUngrab: modestr="NotifyUngrab"; break; case NotifyWhileGrabbed: modestr="NotifyWhileGrabbed"; break; + default: g_assert_not_reached(); } switch (detail) { case NotifyAncestor: detailstr="NotifyAncestor"; break;@@ -427,6 +428,7 @@ case NotifyNonlinearVirtual: detailstr="NotifyNonlinearVirtual"; break;
case NotifyPointer: detailstr="NotifyPointer"; break; case NotifyPointerRoot: detailstr="NotifyPointerRoot"; break; case NotifyDetailNone: detailstr="NotifyDetailNone"; break; + default: g_assert_not_reached(); } if (mode == NotifyGrab || mode == NotifyUngrab)@@ -1598,6 +1600,8 @@ case ShapeInput:
client->shaped_input = ((XShapeEvent*)e)->shaped; kind = ShapeInput; break; + default: + g_assert_not_reached(); } frame_adjust_shape_kind(client->frame, kind); }
@@ -326,10 +326,10 @@ gint ml, mt, mr, mb;
gint l, t, r, b; gint x, y, w, h; Rect *screen_area = NULL; - gint rgbax, rgbay, rgbaw, rgbah; gint i; GList *it; const ObFocusCyclePopupTarget *newtarget; + ObFocusCyclePopupMode mode = p->mode; gint icons_per_row; gint icon_rows; gint textw, texth;@@ -347,8 +347,8 @@ gint up_arrow_x, down_arrow_x;
gint up_arrow_y, down_arrow_y; gboolean showing_arrows = FALSE; - g_assert(p->mode == OB_FOCUS_CYCLE_POPUP_MODE_ICONS || - p->mode == OB_FOCUS_CYCLE_POPUP_MODE_LIST); + g_assert(mode == OB_FOCUS_CYCLE_POPUP_MODE_ICONS || + mode == OB_FOCUS_CYCLE_POPUP_MODE_LIST); screen_area = screen_physical_area_active();@@ -363,7 +363,7 @@ b = mb + OUTSIDE_BORDER;
/* get the width from the text and keep it within limits */ w = l + r + p->maxtextw; - if (p->mode == OB_FOCUS_CYCLE_POPUP_MODE_LIST) + if (mode == OB_FOCUS_CYCLE_POPUP_MODE_LIST) /* when in list mode, there are icons down the side */ w += list_mode_icon_column_w; w = MIN(w, MAX(screen_area->width/3, POPUP_WIDTH)); /* max width */@@ -371,12 +371,12 @@ w = MAX(w, POPUP_WIDTH); /* min width */
/* get the text height */ texth = RrMinHeight(p->a_hilite_text); - if (p->mode == OB_FOCUS_CYCLE_POPUP_MODE_LIST) + if (mode == OB_FOCUS_CYCLE_POPUP_MODE_LIST) texth = MAX(MAX(texth, RrMinHeight(p->a_text)), HILITE_SIZE); else texth += TEXT_BORDER * 2; - if (p->mode == OB_FOCUS_CYCLE_POPUP_MODE_ICONS) { + if (mode == OB_FOCUS_CYCLE_POPUP_MODE_ICONS) { /* how many icons will fit in that row? make the width fit that */ w -= l + r; icons_per_row = (w + HILITE_SIZE - 1) / HILITE_SIZE;@@ -398,7 +398,7 @@ }
/* get the text width */ textw = w - l - r; - if (p->mode == OB_FOCUS_CYCLE_POPUP_MODE_LIST) + if (mode == OB_FOCUS_CYCLE_POPUP_MODE_LIST) /* leave space on the side for the icons */ textw -= list_mode_icon_column_w;@@ -408,7 +408,7 @@ p->scroll = 0;
/* find the height of the dialog */ h = t + b + (icon_rows * MAX(HILITE_SIZE, texth)); - if (p->mode == OB_FOCUS_CYCLE_POPUP_MODE_ICONS) + if (mode == OB_FOCUS_CYCLE_POPUP_MODE_ICONS) /* in icon mode the text sits below the icons, so make some space */ h += OUTSIDE_BORDER + texth;@@ -427,7 +427,7 @@ g_assert(newtarget != NULL);
/* scroll the list if needed */ last_scroll = p->scroll; - if (p->mode == OB_FOCUS_CYCLE_POPUP_MODE_LIST) { + if (mode == OB_FOCUS_CYCLE_POPUP_MODE_LIST) { const gint top = p->scroll + SCROLL_MARGIN; const gint bottom = p->scroll + icon_rows - SCROLL_MARGIN; const gint min_scroll = 0;@@ -443,14 +443,14 @@ }
} /* show the scroll arrows when appropriate */ - if (p->scroll && p->mode == OB_FOCUS_CYCLE_POPUP_MODE_LIST) { + if (p->scroll && mode == OB_FOCUS_CYCLE_POPUP_MODE_LIST) { XMapWindow(obt_display, p->list_mode_up); showing_arrows = TRUE; } else XUnmapWindow(obt_display, p->list_mode_up); if (p->scroll < p->n_targets - icon_rows && - p->mode == OB_FOCUS_CYCLE_POPUP_MODE_LIST) + mode == OB_FOCUS_CYCLE_POPUP_MODE_LIST) { XMapWindow(obt_display, p->list_mode_down); showing_arrows = TRUE;@@ -463,12 +463,12 @@ h += ob_rr_theme->up_arrow_mask->height + OUTSIDE_BORDER
+ ob_rr_theme->down_arrow_mask->height + OUTSIDE_BORDER; /* center the icons if there is less than one row */ - if (p->mode == OB_FOCUS_CYCLE_POPUP_MODE_ICONS && icon_rows == 1) + if (mode == OB_FOCUS_CYCLE_POPUP_MODE_ICONS && icon_rows == 1) icons_center_x = (w - p->n_targets * HILITE_SIZE) / 2; else icons_center_x = 0; - if (p->mode == OB_FOCUS_CYCLE_POPUP_MODE_ICONS) { + if (mode == OB_FOCUS_CYCLE_POPUP_MODE_ICONS) { /* get the position of the text */ icon_mode_textx = l; icon_mode_texty = h - texth - b;@@ -479,18 +479,12 @@ x = screen_area->x + (screen_area->width -
(w + ob_rr_theme->obwidth * 2)) / 2; y = screen_area->y + (screen_area->height - (h + ob_rr_theme->obwidth * 2)) / 2; - - /* get the dimensions of the target hilite texture */ - rgbax = ml; - rgbay = mt; - rgbaw = w - ml - mr; - rgbah = h - mt - mb; if (!p->mapped) { /* position the background but don't draw it */ XMoveResizeWindow(obt_display, p->bg, x, y, w, h); - if (p->mode == OB_FOCUS_CYCLE_POPUP_MODE_ICONS) { + if (mode == OB_FOCUS_CYCLE_POPUP_MODE_ICONS) { /* position the text */ XMoveResizeWindow(obt_display, p->icon_mode_text, icon_mode_textx, icon_mode_texty, textw, texth);@@ -523,7 +517,7 @@ if (!p->mapped)
RrPaint(p->a_bg, p->bg, w, h); /* draw the scroll arrows */ - if (!p->mapped && p->mode == OB_FOCUS_CYCLE_POPUP_MODE_LIST) { + if (!p->mapped && mode == OB_FOCUS_CYCLE_POPUP_MODE_LIST) { p->a_arrow->texture[0].data.mask.mask = ob_rr_theme->up_arrow_mask; p->a_arrow->surface.parent = p->a_bg;@@ -576,7 +570,7 @@ XMoveResizeWindow(obt_display, target->iconwin,
iconx, icony, HILITE_SIZE, HILITE_SIZE); /* position the text */ - if (p->mode == OB_FOCUS_CYCLE_POPUP_MODE_LIST) + if (mode == OB_FOCUS_CYCLE_POPUP_MODE_LIST) XMoveResizeWindow(obt_display, target->textwin, list_mode_textx, list_mode_texty, textw, texth);@@ -584,13 +578,13 @@
/* show/hide the right windows */ if (row >= 0 && row < icon_rows) { XMapWindow(obt_display, target->iconwin); - if (p->mode == OB_FOCUS_CYCLE_POPUP_MODE_LIST) + if (mode == OB_FOCUS_CYCLE_POPUP_MODE_LIST) XMapWindow(obt_display, target->textwin); else XUnmapWindow(obt_display, target->textwin); } else { XUnmapWindow(obt_display, target->textwin); - if (p->mode == OB_FOCUS_CYCLE_POPUP_MODE_LIST) + if (mode == OB_FOCUS_CYCLE_POPUP_MODE_LIST) XUnmapWindow(obt_display, target->iconwin); else XMapWindow(obt_display, target->iconwin);@@ -615,19 +609,19 @@ p->a_icon->surface.parenty = icony;
RrPaint(p->a_icon, target->iconwin, HILITE_SIZE, HILITE_SIZE); /* draw the text */ - if (p->mode == OB_FOCUS_CYCLE_POPUP_MODE_LIST || + if (mode == OB_FOCUS_CYCLE_POPUP_MODE_LIST || target == newtarget) { text = (target == newtarget) ? p->a_hilite_text : p->a_text; text->texture[0].data.text.string = target->text; text->surface.parentx = - p->mode == OB_FOCUS_CYCLE_POPUP_MODE_ICONS ? + mode == OB_FOCUS_CYCLE_POPUP_MODE_ICONS ? icon_mode_textx : list_mode_textx; text->surface.parenty = - p->mode == OB_FOCUS_CYCLE_POPUP_MODE_ICONS ? + mode == OB_FOCUS_CYCLE_POPUP_MODE_ICONS ? icon_mode_texty : list_mode_texty; RrPaint(text, - (p->mode == OB_FOCUS_CYCLE_POPUP_MODE_ICONS ? + (mode == OB_FOCUS_CYCLE_POPUP_MODE_ICONS ? p->icon_mode_text : target->textwin), textw, texth); }
@@ -662,7 +662,7 @@
static void resize_with_keys(gint keycode, gint state) { gint dw = 0, dh = 0, pdx = 0, pdy = 0, opx, opy, px, py; - gint dist = 0, resist = 0; + gint resist = 0; ObDirection dir; /* pick the edge if it needs to move */@@ -674,8 +674,7 @@ {
key_resize_edge = OB_DIRECTION_EAST; return; } - } - if (keycode == ob_keycode(OB_KEY_LEFT)) { + } else if (keycode == ob_keycode(OB_KEY_LEFT)) { dir = OB_DIRECTION_WEST; if (key_resize_edge != OB_DIRECTION_WEST && key_resize_edge != OB_DIRECTION_EAST)@@ -683,8 +682,7 @@ {
key_resize_edge = OB_DIRECTION_WEST; return; } - } - if (keycode == ob_keycode(OB_KEY_UP)) { + } else if (keycode == ob_keycode(OB_KEY_UP)) { dir = OB_DIRECTION_NORTH; if (key_resize_edge != OB_DIRECTION_NORTH && key_resize_edge != OB_DIRECTION_SOUTH)@@ -692,8 +690,7 @@ {
key_resize_edge = OB_DIRECTION_NORTH; return; } - } - if (keycode == ob_keycode(OB_KEY_DOWN)) { + } else /* if (keycode == ob_keycode(OB_KEY_DOWN)) */ { dir = OB_DIRECTION_SOUTH; if (key_resize_edge != OB_DIRECTION_NORTH && key_resize_edge != OB_DIRECTION_SOUTH)@@ -756,27 +753,27 @@ }
if (key_resize_edge == OB_DIRECTION_WEST) { if (dir == OB_DIRECTION_WEST) - dw = (dist = distw); + dw = distw; else - dw = -(dist = distw); + dw = -distw; } else if (key_resize_edge == OB_DIRECTION_EAST) { if (dir == OB_DIRECTION_EAST) - dw = (dist = distw); + dw = distw; else - dw = -(dist = distw); + dw = -distw; } else if (key_resize_edge == OB_DIRECTION_NORTH) { if (dir == OB_DIRECTION_NORTH) - dh = (dist = disth); + dh = disth; else - dh = -(dist = disth); + dh = -disth; } else /*if (key_resize_edge == OB_DIRECTION_SOUTH)*/ { if (dir == OB_DIRECTION_SOUTH) - dh = (dist = disth); + dh = disth; else - dh = -(dist = disth); + dh = -disth; } }
@@ -664,7 +664,7 @@ }
void ob_exit_with_error(const gchar *msg) { - g_message(msg); + g_message("%s", msg); session_shutdown(TRUE); exit(EXIT_FAILURE); }
@@ -58,7 +58,7 @@ void ob_exit_replace(void);
void ob_reconfigure(void); -void ob_exit_with_error(const gchar *msg); +void ob_exit_with_error(const gchar *msg) G_GNUC_NORETURN; Cursor ob_cursor(ObCursor cursor);
@@ -157,11 +157,12 @@ gint emptyx, emptyy; /* empty space between elements */
gint textx, texty, textw, texth; gint iconx, icony, iconw, iconh; Rect *area, mon; + gboolean hasicon = self->hasicon; /* when there is no icon and the text is not parent relative, then fill the whole dialog with the text appearance, don't use the bg at all */ - if (self->hasicon || self->a_text->surface.grad == RR_SURFACE_PARENTREL) + if (hasicon || self->a_text->surface.grad == RR_SURFACE_PARENTREL) RrMargins(self->a_bg, &l, &t, &r, &b); else l = t = r = b = 0;@@ -189,7 +190,7 @@
iconx = textx = l + ob_rr_theme->paddingx; emptyx = l + r + ob_rr_theme->paddingx * 2; - if (self->hasicon) { + if (hasicon) { iconw = texth * self->iconwm; iconh = texth * self->iconhm; textx += iconw + ob_rr_theme->paddingx;@@ -204,7 +205,7 @@
/* when there is no icon, then fill the whole dialog with the text appearance */ - if (!self->hasicon) + if (!hasicon) { textx = texty = 0; texth += emptyy;@@ -276,7 +277,7 @@ XMoveResizeWindow(obt_display, self->bg, x, y, w, h);
/* when there is no icon and the text is not parent relative, then fill the whole dialog with the text appearance, don't use the bg at all */ - if (self->hasicon || self->a_text->surface.grad == RR_SURFACE_PARENTREL) + if (hasicon || self->a_text->surface.grad == RR_SURFACE_PARENTREL) RrPaint(self->a_bg, self->bg, w, h); if (textw) {@@ -287,7 +288,7 @@ XMoveResizeWindow(obt_display, self->text, textx, texty, textw, texth);
RrPaint(self->a_text, self->text, textw, texth); } - if (self->hasicon) + if (hasicon) self->draw_icon(iconx, icony, iconw, iconh, self->draw_icon_data); /* do the actual showing */
@@ -95,7 +95,7 @@
prompt_a_button->texture[0].data.text.color = c_button; prompt_a_focus->texture[0].data.text.color = c_focus; prompt_a_press->texture[0].data.text.color = c_press; - prompt_a_pfocus->texture[0].data.text.color = c_press; + prompt_a_pfocus->texture[0].data.text.color = c_pfocus; prompt_a_focus->texture[1].data.lineart.color = c_focus; prompt_a_focus->texture[2].data.lineart.color = c_focus;
@@ -328,7 +328,6 @@ gint dlt, drb; /* my destination left/top and right/bottom sides */
Rect *area, *parea; gint al, at, ar, ab; /* screen boundaries */ gint pl, pt, pr, pb; /* physical screen boundaries */ - gint incw, inch; guint i; Rect desired_area;@@ -338,9 +337,6 @@ l = RECT_LEFT(c->frame->area);
r = RECT_RIGHT(c->frame->area); t = RECT_TOP(c->frame->area); b = RECT_BOTTOM(c->frame->area); - - incw = c->size_inc.width; - inch = c->size_inc.height; RECT_SET(desired_area, c->area.x, c->area.y, *w, *h);
@@ -505,7 +505,6 @@ }
void screen_set_num_desktops(guint num) { - guint old; gulong *viewport; GList *it, *stacking_copy;@@ -513,7 +512,6 @@ g_assert(num > 0);
if (screen_num_desktops == num) return; - old = screen_num_desktops; screen_num_desktops = num; OBT_PROP_SET32(obt_root(ob_screen), NET_NUMBER_OF_DESKTOPS, CARDINAL, num);@@ -1582,7 +1580,7 @@ Rect* screen_area(guint desktop, guint head, Rect *search)
{ Rect *a; GSList *it; - gint l, r, t, b, al, ar, at, ab; + gint l, r, t, b; guint i, d; gboolean us = search != NULL; /* user provided search */@@ -1608,30 +1606,30 @@ */
/* only include monitors which the search area lines up with */ if (RECT_INTERSECTS_RECT(monitor_area[screen_num_monitors], *search)) { - al = l = RECT_RIGHT(monitor_area[screen_num_monitors]); - at = t = RECT_BOTTOM(monitor_area[screen_num_monitors]); - ar = r = RECT_LEFT(monitor_area[screen_num_monitors]); - ab = b = RECT_TOP(monitor_area[screen_num_monitors]); + l = RECT_RIGHT(monitor_area[screen_num_monitors]); + t = RECT_BOTTOM(monitor_area[screen_num_monitors]); + r = RECT_LEFT(monitor_area[screen_num_monitors]); + b = RECT_TOP(monitor_area[screen_num_monitors]); for (i = 0; i < screen_num_monitors; ++i) { /* add the monitor if applicable */ if (RANGES_INTERSECT(search->x, search->width, monitor_area[i].x, monitor_area[i].width)) { - at = t = MIN(t, RECT_TOP(monitor_area[i])); - ab = b = MAX(b, RECT_BOTTOM(monitor_area[i])); + t = MIN(t, RECT_TOP(monitor_area[i])); + b = MAX(b, RECT_BOTTOM(monitor_area[i])); } if (RANGES_INTERSECT(search->y, search->height, monitor_area[i].y, monitor_area[i].height)) { - al = l = MIN(l, RECT_LEFT(monitor_area[i])); - ar = r = MAX(r, RECT_RIGHT(monitor_area[i])); + l = MIN(l, RECT_LEFT(monitor_area[i])); + r = MAX(r, RECT_RIGHT(monitor_area[i])); } } } else { - al = l = RECT_LEFT(monitor_area[screen_num_monitors]); - at = t = RECT_TOP(monitor_area[screen_num_monitors]); - ar = r = RECT_RIGHT(monitor_area[screen_num_monitors]); - ab = b = RECT_BOTTOM(monitor_area[screen_num_monitors]); + l = RECT_LEFT(monitor_area[screen_num_monitors]); + t = RECT_TOP(monitor_area[screen_num_monitors]); + r = RECT_RIGHT(monitor_area[screen_num_monitors]); + b = RECT_BOTTOM(monitor_area[screen_num_monitors]); } for (d = 0; d < screen_num_desktops; ++d) {
@@ -69,6 +69,8 @@ gint i;
#ifdef DEBUG GList *next; + + g_assert(wins); /* pls only restack stuff in the same layer at a time */ for (it = wins; it; it = next) { next = g_list_next(it);
@@ -217,7 +217,7 @@ }
void RrFontDraw(XftDraw *d, RrTextureText *t, RrRect *area) { - gint x,y,w,h; + gint x,y,w; XftColor c; gint mw; PangoRectangle rect;@@ -240,7 +240,7 @@ x = area->x + 2;
w = area->width; if (t->flow) w = MAX(w, t->maxwidth); w -= 4; - h = area->height; + /* h = area->height; */ if (t->flow) ell = PANGO_ELLIPSIZE_NONE;@@ -258,6 +258,8 @@ break;
case RR_ELLIPSIZE_END: ell = PANGO_ELLIPSIZE_END; break; + default: + g_assert_not_reached(); } }