self->rgriptop = createWindow(self->window, NULL, mask, &attrib);
self->rgripbottom = createWindow(self->window, NULL, mask, &attrib);
+ self->stitle = g_strdup("");
self->focused = FALSE;
/* the other stuff is shown based on decor settings */
XDestroyWindow(plugin.ob_display, OBDEFAULTFRAME(self)->window);
if (OBDEFAULTFRAME(self)->colormap)
XFreeColormap(plugin.ob_display, OBDEFAULTFRAME(self)->colormap);
+
+ g_free(OBDEFAULTFRAME(self)->stitle);
g_free(self);
}
return OBDEFAULTFRAME(self)->decorations;
}
+void frame_update_title (gpointer self, const gchar * src)
+{
+ g_free(OBDEFAULTFRAME(self)->stitle);
+ OBDEFAULTFRAME(self)->stitle = g_strdup(src);
+}
+
gboolean frame_is_visible(gpointer self)
{
return OBDEFAULTFRAME(self)->visible;
"libdefault.la", //gchar * filename;
"Default", //gchar * name;
init, //gint (*init) (Display * display, gint screen);
- 0, frame_new, //gpointer (*frame_new) (struct _ObClient *c);
+ 0, /* */
+ frame_new, //gpointer (*frame_new) (struct _ObClient *c);
frame_free, //void (*frame_free) (gpointer self);
frame_show, //void (*frame_show) (gpointer self);
frame_hide, //void (*frame_hide) (gpointer self);
frame_iconify_animating, /* */
frame_set_decorations, /* */
+
+ frame_update_title, /* */
/* This give the window area */
frame_get_window_area, /* */
frame_set_client_area, /* */
Window window;
+ gchar * stitle; /* The current title we draw */
+
gboolean visible;
gboolean max_horz; /* when maxed some decorations are hidden */
Rect frame_get_area(gpointer self);
gint frame_get_decorations(gpointer self);
+void frame_update_title (gpointer, const gchar *);
+
gboolean frame_is_visible(gpointer self);
gboolean frame_is_max_horz(gpointer self);
gboolean frame_is_max_vert(gpointer self);
if (!self->label_on)
return;
/* set the texture's text! */
- a->texture[0].data.text.string = self->client->title;
+ a->texture[0].data.text.string = self->stitle;
RrPaint(a, self->label, self->label_width, theme_config.label_height);
}
render_plugin->frame_set_press_flag (self->frame, OB_BUTTON_NONE);
render_plugin->frame_set_is_focus (self->frame, FALSE);
render_plugin->frame_set_decorations (self->frame, self->decorations);
+ render_plugin->frame_update_title (self->frame, self->title);
render_plugin->frame_update_layout (self->frame, FALSE, TRUE);
render_plugin->frame_update_skin (self->frame);
/* create the decoration frame for the client window and adjust its size */
self->frame = render_plugin->frame_new(self);
render_plugin->frame_set_decorations (self->frame, self->decorations);
+ render_plugin->frame_update_title (self->frame, self->title);
render_plugin->frame_update_layout (self->frame, FALSE, FALSE);
+ render_plugin->frame_update_skin (self->frame);
ob_debug("gave extents left %d right %d top %d bottom %d",
render_plugin->frame_get_size(self->frame).left, render_plugin->frame_get_size(self->frame).right,
OBT_PROP_SETS(self->window, NET_WM_VISIBLE_NAME, utf8, visible);
self->title = visible;
- if (self->frame)
- render_plugin->frame_update_layout (self->frame, FALSE, FALSE);
+ if (self->frame) {
+ /* update title render */
+ render_plugin->frame_update_title (self->frame, self->title);
+ render_plugin->frame_update_skin (self->frame);
+ }
/* update the icon title */
data = NULL;
/* Set the layout wanted by client */
void (*frame_set_decorations)(gpointer, ObFrameDecorations);
+
+ void (*frame_update_title)(gpointer, const gchar *);
/* get the current window area */
Rect (*frame_get_window_area)(gpointer);