Skip to content

Implement window decorations (title bar, borders, buttons) #408

@pbalduino

Description

@pbalduino

Summary

Implement window decorations including title bars, borders, resize handles, and control buttons (minimize, maximize, close).

Goals

  • Title bar with window title
  • Window borders
  • Minimize, maximize, close buttons
  • Resize handles
  • Active/inactive styling

Implementation

Decoration Rendering

```c
#define TITLEBAR_HEIGHT 24
#define BORDER_WIDTH 1

void wm_draw_decoration(struct window *w) {
cairo_t *cr = cairo_create(screen_surface);

// Draw title bar
cairo_rectangle(cr, w->x, w->y - TITLEBAR_HEIGHT,
               w->width, TITLEBAR_HEIGHT);
if (w->focused) {
    cairo_set_source_rgb(cr, 0.2, 0.4, 0.7);  // Blue
} else {
    cairo_set_source_rgb(cr, 0.3, 0.3, 0.3);  // Gray
}
cairo_fill(cr);

// Draw title text
cairo_set_source_rgb(cr, 1.0, 1.0, 1.0);
cairo_select_font_face(cr, "Sans", ...);
cairo_move_to(cr, w->x + 5, w->y - 6);
cairo_show_text(cr, w->title);

// Draw close button
draw_close_button(cr, w->x + w->width - 20, w->y - 20);

// Draw border
cairo_rectangle(cr, w->x - BORDER_WIDTH,
               w->y - TITLEBAR_HEIGHT - BORDER_WIDTH,
               w->width + 2*BORDER_WIDTH,
               w->height + TITLEBAR_HEIGHT + 2*BORDER_WIDTH);
cairo_set_line_width(cr, BORDER_WIDTH);
cairo_stroke(cr);

cairo_destroy(cr);

}
```

Timeline

Total: 2-3 weeks

Definition of Done

  • Title bars render
  • Window titles display
  • Control buttons work
  • Resize handles work
  • Active/inactive styles
  • Professional appearance

Dependencies

See docs/road/road_to_gui.md for complete roadmap.

Metadata

Metadata

Assignees

Labels

GUIGraphical user interface componentsenhancementNew feature or request

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions