mirror of
https://github.com/brl/mutter.git
synced 2024-11-25 09:30:45 -05:00
hack around bug in kmail etc. where SM_CLIENT_ID was set on the window,
2002-08-24 Havoc Pennington <hp@redhat.com> * src/window.c (update_sm_hints): hack around bug in kmail etc. where SM_CLIENT_ID was set on the window, not the client leader. * src/theme.c (meta_frame_layout_calc_geometry): don't round corners unless we have enough frame to chop off.
This commit is contained in:
parent
b9002db37f
commit
cbb4a91113
@ -1,3 +1,11 @@
|
|||||||
|
2002-08-24 Havoc Pennington <hp@redhat.com>
|
||||||
|
|
||||||
|
* src/window.c (update_sm_hints): hack around bug in kmail etc.
|
||||||
|
where SM_CLIENT_ID was set on the window, not the client leader.
|
||||||
|
|
||||||
|
* src/theme.c (meta_frame_layout_calc_geometry): don't round
|
||||||
|
corners unless we have enough frame to chop off.
|
||||||
|
|
||||||
2002-08-24 Havoc Pennington <hp@redhat.com>
|
2002-08-24 Havoc Pennington <hp@redhat.com>
|
||||||
|
|
||||||
* src/util.c: translate some strings that should have been, and
|
* src/util.c: translate some strings that should have been, and
|
||||||
|
21
src/theme.c
21
src/theme.c
@ -567,12 +567,29 @@ meta_frame_layout_calc_geometry (const MetaFrameLayout *layout,
|
|||||||
fgeom->title_rect.height = 0;
|
fgeom->title_rect.height = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define MIN_SIZE_FOR_ROUNDING 3
|
||||||
|
|
||||||
|
fgeom->top_left_corner_rounded = FALSE;
|
||||||
|
fgeom->top_right_corner_rounded = FALSE;
|
||||||
|
fgeom->bottom_left_corner_rounded = FALSE;
|
||||||
|
fgeom->bottom_right_corner_rounded = FALSE;
|
||||||
|
|
||||||
|
if (fgeom->top_height >= MIN_SIZE_FOR_ROUNDING)
|
||||||
|
{
|
||||||
|
if (fgeom->left_width >= MIN_SIZE_FOR_ROUNDING)
|
||||||
fgeom->top_left_corner_rounded = layout->top_left_corner_rounded;
|
fgeom->top_left_corner_rounded = layout->top_left_corner_rounded;
|
||||||
|
if (fgeom->right_width >= MIN_SIZE_FOR_ROUNDING)
|
||||||
fgeom->top_right_corner_rounded = layout->top_right_corner_rounded;
|
fgeom->top_right_corner_rounded = layout->top_right_corner_rounded;
|
||||||
fgeom->bottom_left_corner_rounded = layout->bottom_left_corner_rounded;
|
|
||||||
fgeom->bottom_right_corner_rounded = layout->bottom_right_corner_rounded;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (fgeom->bottom_height >= MIN_SIZE_FOR_ROUNDING)
|
||||||
|
{
|
||||||
|
if (fgeom->left_width >= MIN_SIZE_FOR_ROUNDING)
|
||||||
|
fgeom->bottom_left_corner_rounded = layout->bottom_left_corner_rounded;
|
||||||
|
if (fgeom->right_width >= MIN_SIZE_FOR_ROUNDING)
|
||||||
|
fgeom->bottom_right_corner_rounded = layout->bottom_right_corner_rounded;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
MetaGradientSpec*
|
MetaGradientSpec*
|
||||||
meta_gradient_spec_new (MetaGradientType type)
|
meta_gradient_spec_new (MetaGradientType type)
|
||||||
|
29
src/window.c
29
src/window.c
@ -4606,14 +4606,37 @@ update_sm_hints (MetaWindow *window)
|
|||||||
window->sm_client_id = g_strdup (str);
|
window->sm_client_id = g_strdup (str);
|
||||||
meta_XFree (str);
|
meta_XFree (str);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
meta_verbose ("Didn't find a client leader for %s\n", window->desc);
|
||||||
|
|
||||||
|
if (!meta_prefs_get_disable_workarounds ())
|
||||||
|
{
|
||||||
|
/* Some broken apps (kdelibs fault?) set SM_CLIENT_ID on the app
|
||||||
|
* instead of the client leader
|
||||||
|
*/
|
||||||
|
char *str;
|
||||||
|
|
||||||
|
str = NULL;
|
||||||
|
if (meta_prop_get_latin1_string (window->display, window->xwindow,
|
||||||
|
window->display->atom_sm_client_id,
|
||||||
|
&str))
|
||||||
|
{
|
||||||
|
if (window->sm_client_id == NULL) /* first time through */
|
||||||
|
meta_warning (_("Window %s sets SM_CLIENT_ID on itself, instead of on the WM_CLIENT_LEADER window as specified in the ICCCM.\n"),
|
||||||
|
window->desc);
|
||||||
|
|
||||||
|
window->sm_client_id = g_strdup (str);
|
||||||
|
meta_XFree (str);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
meta_verbose ("Window %s client leader: 0x%lx SM_CLIENT_ID: '%s'\n",
|
meta_verbose ("Window %s client leader: 0x%lx SM_CLIENT_ID: '%s'\n",
|
||||||
window->desc, window->xclient_leader,
|
window->desc, window->xclient_leader,
|
||||||
window->sm_client_id ? window->sm_client_id : "(null)");
|
window->sm_client_id ? window->sm_client_id : "(null)");
|
||||||
}
|
}
|
||||||
else
|
|
||||||
meta_verbose ("Didn't find a client leader for %s\n", window->desc);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
update_role (MetaWindow *window)
|
update_role (MetaWindow *window)
|
||||||
|
Loading…
Reference in New Issue
Block a user