Skip to content

Commit

Permalink
Merge branch 'semplice-orig' into semplice
Browse files Browse the repository at this point in the history
  • Loading branch information
g7 committed Jan 28, 2016
2 parents 8620dd0 + b9c6100 commit 08d3155
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 13 deletions.
2 changes: 1 addition & 1 deletion src/launcher/launcher.c
Original file line number Diff line number Diff line change
Expand Up @@ -457,10 +457,10 @@ void launcher_load_icons(Launcher *launcher)
launcherIcon->icon_name = entry.icon ? strdup(entry.icon) : strdup(DEFAULT_ICON);
launcherIcon->icon_size = 1;
launcherIcon->icon_tooltip = entry.name ? strdup(entry.name) : strdup(entry.exec);
free_desktop_entry(&entry);
launcher->list_icons = g_slist_append(launcher->list_icons, launcherIcon);
add_area(&launcherIcon->area, (Area *)launcher);
}
free_desktop_entry(&entry);
app = g_slist_next(app);
}
}
Expand Down
12 changes: 8 additions & 4 deletions src/server.c
Original file line number Diff line number Diff line change
Expand Up @@ -427,8 +427,10 @@ void server_get_number_of_desktops()
XFree(x_screen_size);

int num_viewports = MAX(x_screen_width / work_area_width, 1) * MAX(x_screen_height / work_area_height, 1);
if (num_viewports <= 1)
if (num_viewports <= 1) {
server.num_desktops = 1;
return;
}

server.viewports = calloc(num_viewports, sizeof(Viewport));
int k = 0;
Expand Down Expand Up @@ -473,8 +475,9 @@ GSList *get_desktop_names()

int get_current_desktop()
{
if (!server.viewports)
return get_property32(server.root_win, server.atom._NET_CURRENT_DESKTOP, XA_CARDINAL);
if (!server.viewports) {
return MAX(0, MIN(server.num_desktops - 1, get_property32(server.root_win, server.atom._NET_CURRENT_DESKTOP, XA_CARDINAL)));
}

int num_results;
long *work_area_size = server_get_property(server.root_win, server.atom._NET_WORKAREA, XA_CARDINAL, &num_results);
Expand Down Expand Up @@ -507,7 +510,8 @@ int get_current_desktop()
// fprintf(stderr, "Viewport pos: %d x %d\n", viewport_x, viewport_y);
// fprintf(stderr, "Viewport i: %d\n", (viewport_y / work_area_height) * ncols + viewport_x / work_area_width);

return (viewport_y / work_area_height) * ncols + viewport_x / work_area_width;
int result = (viewport_y / work_area_height) * ncols + viewport_x / work_area_width;
return MAX(0, MIN(server.num_desktops - 1, result));
}

void change_desktop(int desktop)
Expand Down
9 changes: 4 additions & 5 deletions src/util/area.c
Original file line number Diff line number Diff line change
Expand Up @@ -378,12 +378,11 @@ void draw(Area *a)
a->pix = XCreatePixmap(server.display, server.root_win, a->width, a->height, server.depth);
a->pix_by_state[a->has_mouse_over_effect ? a->mouse_state : 0] = a->pix;

// Add layer of root pixmap (or clear pixmap if real_transparency==true)
if (!a->_clear) {
clear_pixmap(a->pix, 0, 0, a->width, a->height);
if (!server.real_transparency) {
XCopyArea(server.display, ((Panel *)a->panel)->temp_pmap, a->pix, server.gc, a->posx, a->posy, a->width, a->height, 0, 0);
}
// Add layer of root pixmap (or clear pixmap if real_transparency==true)
if (server.real_transparency)
clear_pixmap(a->pix, 0, 0, a->width, a->height);
XCopyArea(server.display, ((Panel *)a->panel)->temp_pmap, a->pix, server.gc, a->posx, a->posy, a->width, a->height, 0, 0);
} else {
a->_clear(a);
}
Expand Down
10 changes: 7 additions & 3 deletions src/util/window.c
Original file line number Diff line number Diff line change
Expand Up @@ -108,13 +108,17 @@ gboolean window_is_hidden(Window win)

int get_window_desktop(Window win)
{
if (!server.viewports)
return MAX(0, MIN(server.num_desktops - 1, get_property32(win, server.atom._NET_WM_DESKTOP, XA_CARDINAL)));
if (!server.viewports) {
int desktop = get_property32(win, server.atom._NET_WM_DESKTOP, XA_CARDINAL);
if (desktop != ALL_DESKTOPS)
desktop = MAX(0, MIN(server.num_desktops - 1, desktop));
return desktop;
}

int x, y, w, h;
get_window_coordinates(win, &x, &y, &w, &h);

int desktop = MIN(get_current_desktop(), server.num_desktops - 1);
int desktop = get_current_desktop();
// Window coordinates are relative to the current viewport, make them absolute
x += server.viewports[desktop].x;
y += server.viewports[desktop].y;
Expand Down

0 comments on commit 08d3155

Please sign in to comment.