Merge branch 'DreamMaoMao:main' into main

This commit is contained in:
Talha Ahmed 2026-02-05 19:01:08 +11:00 committed by GitHub
commit fa057ae342
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 44 additions and 52 deletions

View file

@ -1054,20 +1054,11 @@ void client_set_focused_opacity_animation(Client *c) {
sizeof(c->opacity_animation.target_border_color)); sizeof(c->opacity_animation.target_border_color));
c->opacity_animation.target_opacity = c->focused_opacity; c->opacity_animation.target_opacity = c->focused_opacity;
c->opacity_animation.time_started = get_now_in_ms(); c->opacity_animation.time_started = get_now_in_ms();
if (c->opacity_animation.running) { memcpy(c->opacity_animation.initial_border_color,
memcpy(c->opacity_animation.initial_border_color, c->opacity_animation.current_border_color,
c->opacity_animation.current_border_color, sizeof(c->opacity_animation.initial_border_color));
sizeof(c->opacity_animation.initial_border_color)); c->opacity_animation.initial_opacity = c->opacity_animation.current_opacity;
c->opacity_animation.initial_opacity =
c->opacity_animation.current_opacity;
} else {
memcpy(c->opacity_animation.initial_border_color, bordercolor,
sizeof(c->opacity_animation.initial_border_color));
memcpy(c->opacity_animation.current_border_color, bordercolor,
sizeof(c->opacity_animation.current_border_color));
c->opacity_animation.initial_opacity = c->unfocused_opacity;
c->opacity_animation.current_opacity = c->unfocused_opacity;
}
c->opacity_animation.running = true; c->opacity_animation.running = true;
} }
@ -1087,20 +1078,10 @@ void client_set_unfocused_opacity_animation(Client *c) {
c->opacity_animation.target_opacity = c->unfocused_opacity; c->opacity_animation.target_opacity = c->unfocused_opacity;
c->opacity_animation.time_started = get_now_in_ms(); c->opacity_animation.time_started = get_now_in_ms();
if (c->opacity_animation.running) { memcpy(c->opacity_animation.initial_border_color,
memcpy(c->opacity_animation.initial_border_color, c->opacity_animation.current_border_color,
c->opacity_animation.current_border_color, sizeof(c->opacity_animation.initial_border_color));
sizeof(c->opacity_animation.initial_border_color)); c->opacity_animation.initial_opacity = c->opacity_animation.current_opacity;
c->opacity_animation.initial_opacity =
c->opacity_animation.current_opacity;
} else {
memcpy(c->opacity_animation.initial_border_color, border_color,
sizeof(c->opacity_animation.initial_border_color));
memcpy(c->opacity_animation.current_border_color, border_color,
sizeof(c->opacity_animation.current_border_color));
c->opacity_animation.initial_opacity = c->focused_opacity;
c->opacity_animation.current_opacity = c->focused_opacity;
}
c->opacity_animation.running = true; c->opacity_animation.running = true;
} }
@ -1135,6 +1116,10 @@ bool client_apply_focus_opacity(Client *c) {
if (target_opacity > opacity) { if (target_opacity > opacity) {
target_opacity = opacity; target_opacity = opacity;
} }
memcpy(c->opacity_animation.current_border_color,
c->opacity_animation.target_border_color,
sizeof(c->opacity_animation.current_border_color));
c->opacity_animation.current_opacity = target_opacity;
client_set_opacity(c, target_opacity); client_set_opacity(c, target_opacity);
client_set_border_color(c, c->opacity_animation.target_border_color); client_set_border_color(c, c->opacity_animation.target_border_color);
} else if (animations && c->opacity_animation.running) { } else if (animations && c->opacity_animation.running) {

View file

@ -822,8 +822,9 @@ KeySymCode parse_key(const char *key_str, bool isbindsym) {
return kc; return kc;
} }
// 普通键名直接转换 // change key string to keysym, case insensitive
xkb_keysym_t sym = xkb_keysym_from_name(key_str, XKB_KEYSYM_NO_FLAGS); xkb_keysym_t sym =
xkb_keysym_from_name(key_str, XKB_KEYSYM_CASE_INSENSITIVE);
if (isbindsym) { if (isbindsym) {
kc.type = KEY_TYPE_SYM; kc.type = KEY_TYPE_SYM;
@ -940,6 +941,12 @@ FuncType parse_func_name(char *func_name, Arg *arg, char *arg_value,
char *arg_value5) { char *arg_value5) {
FuncType func = NULL; FuncType func = NULL;
(*arg).i = 0;
(*arg).i2 = 0;
(*arg).f = 0.0f;
(*arg).f2 = 0.0f;
(*arg).ui = 0;
(*arg).ui2 = 0;
(*arg).v = NULL; (*arg).v = NULL;
(*arg).v2 = NULL; (*arg).v2 = NULL;
(*arg).v3 = NULL; (*arg).v3 = NULL;
@ -2869,7 +2876,10 @@ void parse_config_file(Config *config, const char *file_path) {
} }
if (!file) { if (!file) {
perror("Error opening file"); fprintf(stderr,
"\033[1;31m\033[1;33m[ERROR]:\033[0m Failed to open "
"config file: %s\n",
file_path);
return; return;
} }

View file

@ -969,7 +969,6 @@ static struct wlr_xwayland *xwayland;
void client_change_mon(Client *c, Monitor *m) { void client_change_mon(Client *c, Monitor *m) {
setmon(c, m, c->tags, true); setmon(c, m, c->tags, true);
reset_foreign_tolevel(c);
if (c->isfloating) { if (c->isfloating) {
c->float_geom = c->geom = c->float_geom = c->geom =
setclient_coordinate_center(c, c->mon, c->geom, 0, 0); setclient_coordinate_center(c, c->mon, c->geom, 0, 0);
@ -1071,6 +1070,9 @@ void swallow(Client *c, Client *w) {
c->tags = w->tags; c->tags = w->tags;
c->geom = w->geom; c->geom = w->geom;
c->float_geom = w->float_geom; c->float_geom = w->float_geom;
c->stack_inner_per = w->stack_inner_per;
c->master_inner_per = w->master_inner_per;
c->master_mfact_per = w->master_mfact_per;
c->scroller_proportion = w->scroller_proportion; c->scroller_proportion = w->scroller_proportion;
c->next_in_stack = w->next_in_stack; c->next_in_stack = w->next_in_stack;
c->prev_in_stack = w->prev_in_stack; c->prev_in_stack = w->prev_in_stack;
@ -2023,7 +2025,6 @@ buttonpress(struct wl_listener *listener, void *data) {
selmon = xytomon(cursor->x, cursor->y); selmon = xytomon(cursor->x, cursor->y);
client_update_oldmonname_record(grabc, selmon); client_update_oldmonname_record(grabc, selmon);
setmon(grabc, selmon, 0, true); setmon(grabc, selmon, 0, true);
reset_foreign_tolevel(grabc);
selmon->prevsel = ISTILED(selmon->sel) ? selmon->sel : NULL; selmon->prevsel = ISTILED(selmon->sel) ? selmon->sel : NULL;
selmon->sel = grabc; selmon->sel = grabc;
tmpc = grabc; tmpc = grabc;
@ -3825,6 +3826,12 @@ void init_client_properties(Client *c) {
c->stack_proportion = 0.0f; c->stack_proportion = 0.0f;
c->next_in_stack = NULL; c->next_in_stack = NULL;
c->prev_in_stack = NULL; c->prev_in_stack = NULL;
memcpy(c->opacity_animation.initial_border_color, bordercolor,
sizeof(c->opacity_animation.initial_border_color));
memcpy(c->opacity_animation.current_border_color, bordercolor,
sizeof(c->opacity_animation.current_border_color));
c->opacity_animation.initial_opacity = c->unfocused_opacity;
c->opacity_animation.current_opacity = c->unfocused_opacity;
} }
void // old fix to 0.5 void // old fix to 0.5
@ -4672,6 +4679,7 @@ setfloating(Client *c, int32_t floating) {
Client *fc = NULL; Client *fc = NULL;
struct wlr_box target_box; struct wlr_box target_box;
int32_t old_floating_state = c->isfloating;
c->isfloating = floating; c->isfloating = floating;
bool window_size_outofrange = false; bool window_size_outofrange = false;
@ -4741,7 +4749,7 @@ setfloating(Client *c, int32_t floating) {
layers[c->isfloating ? LyrTop : LyrTile]); layers[c->isfloating ? LyrTop : LyrTile]);
} }
if (!c->isfloating) { if (!c->isfloating && old_floating_state) {
set_size_per(c->mon, c); set_size_per(c->mon, c);
} }
@ -4790,6 +4798,7 @@ void setmaximizescreen(Client *c, int32_t maximizescreen) {
if (c->mon->isoverview) if (c->mon->isoverview)
return; return;
int32_t old_maximizescreen_state = c->ismaximizescreen;
c->ismaximizescreen = maximizescreen; c->ismaximizescreen = maximizescreen;
if (maximizescreen) { if (maximizescreen) {
@ -4819,7 +4828,7 @@ void setmaximizescreen(Client *c, int32_t maximizescreen) {
wlr_scene_node_reparent(&c->scene->node, wlr_scene_node_reparent(&c->scene->node,
layers[c->isfloating ? LyrTop : LyrTile]); layers[c->isfloating ? LyrTop : LyrTile]);
if (!c->ismaximizescreen) { if (!c->ismaximizescreen && old_maximizescreen_state) {
set_size_per(c->mon, c); set_size_per(c->mon, c);
} }
@ -4852,6 +4861,7 @@ void setfullscreen(Client *c, int32_t fullscreen) // 用自定义全屏代理自
if (c->mon->isoverview) if (c->mon->isoverview)
return; return;
int32_t old_fullscreen_state = c->isfullscreen;
c->isfullscreen = fullscreen; c->isfullscreen = fullscreen;
client_set_fullscreen(c, fullscreen); client_set_fullscreen(c, fullscreen);
@ -4889,7 +4899,7 @@ void setfullscreen(Client *c, int32_t fullscreen) // 用自定义全屏代理自
layers[fullscreen || c->isfloating ? LyrTop : LyrTile]); layers[fullscreen || c->isfloating ? LyrTop : LyrTile]);
} }
if (!c->isfullscreen) { if (!c->isfullscreen && old_fullscreen_state) {
set_size_per(c->mon, c); set_size_per(c->mon, c);
} }
@ -5018,6 +5028,7 @@ void setmon(Client *c, Monitor *m, uint32_t newtags, bool focus) {
arrange(oldmon, false, false); arrange(oldmon, false, false);
if (m) { if (m) {
/* Make sure window actually overlaps with the monitor */ /* Make sure window actually overlaps with the monitor */
reset_foreign_tolevel(c);
resize(c, c->geom, 0); resize(c, c->geom, 0);
c->tags = c->tags =
newtags ? newtags newtags ? newtags
@ -5029,21 +5040,6 @@ void setmon(Client *c, Monitor *m, uint32_t newtags, bool focus) {
if (focus && !client_is_x11_popup(c)) { if (focus && !client_is_x11_popup(c)) {
focusclient(focustop(selmon), 1); focusclient(focustop(selmon), 1);
} }
if (m) {
if (c->foreign_toplevel) {
remove_foreign_topleve(c);
}
add_foreign_toplevel(c);
if (m->sel && m->sel->foreign_toplevel)
wlr_foreign_toplevel_handle_v1_set_activated(
m->sel->foreign_toplevel, false);
if (c->foreign_toplevel)
wlr_foreign_toplevel_handle_v1_set_activated(c->foreign_toplevel,
true);
}
} }
void setpsel(struct wl_listener *listener, void *data) { void setpsel(struct wl_listener *listener, void *data) {
@ -5798,7 +5794,8 @@ void updatemons(struct wl_listener *listener, void *data) {
if (selmon && selmon->wlr_output->enabled) { if (selmon && selmon->wlr_output->enabled) {
wl_list_for_each(c, &clients, link) { wl_list_for_each(c, &clients, link) {
if (!c->mon && client_surface(c)->mapped) { if (!c->mon && client_surface(c)->mapped) {
client_change_mon(c, selmon); c->mon = selmon;
reset_foreign_tolevel(c);
} }
} }
focusclient(focustop(selmon), 1); focusclient(focustop(selmon), 1);