Commit 5cb68d8d authored by George Lebl's avatar George Lebl

merge changes from GNOME_STABLE

-George
parent e415e0f8
......@@ -3,6 +3,136 @@
* button-widget.c (button_widget_draw): Only draw if the tile is
non NULL.
Tue Dec 29 02:22:36 1998 George Lebl <jirka@5z.com>
* menu.c: couple of minor fixes
Mon Dec 28 20:57:33 1998 George Lebl <jirka@5z.com>
* menu.c: remove problematic string breaking routine and use the
gnome-config one, and fix a small memory leak
Mon Dec 28 00:26:52 1998 George Lebl <jirka@5z.com>
* applet-widget.c,panel.c: cosmetic code changes
1998-12-26 Martin Baulig <martin@home-of-linux.org>
* session.c (panel_config_sync): Set `applets_to_sync' back to
NULL before calling do_session_save (), to make it work when
called recursively.
Sat Dec 26 01:16:45 1998 George Lebl <jirka@5z.com>
* *.c: destroy signal is a void function, I always thought it
returned int, so I fixed that
Thu Dec 24 12:21:20 1998 George Lebl <jirka@5z.com>
* menu.c: don't load menu on startup for menu applets
* menu.[ch],session,panel.[ch],main.c,applet.[ch]: implement menu
aging, old menus are destroyed if not used for over a minute to
save memory
Thu Dec 24 04:05:25 1998 George Lebl <jirka@5z.com>
* menu.c: save a couple of extra bytes by not allocating a
string since we have a usable string that lasts long enough
Thu Dec 24 03:48:46 1998 George Lebl <jirka@5z.com>
* menu.c: create top level submenus as fakes, this saves even more
ram if the user never uses a menu
Thu Dec 24 03:37:05 1998 George Lebl <jirka@5z.com>
* drawer.[ch],session.c,menu.c: cleaned up params argument to be
an int, this is some old old cruft from about a year ago
* *.[ch]: minor cleanups, changed a bunch of GList's to GSList's
* panel.c: don't load the panel menu by default, load it when needed
* menu.[ch],session.c: got rid of the dot buttons and icons list,
now we just mark all menus as dirty, ready for rereading, this
saves us tuns of memory when the user doesn't use pixmaps or
dot_buttons .. and we also don't load all menus at startup
Wed Dec 23 22:53:40 1998 George Lebl <jirka@5z.com>
* menu.c: completely change how redhat menus are read, now they
are converted to normal gnome menus. also they are not fully
checked for additions, only the directories are checked so it
won't catch modified files, just added/removed files
* menu.c: converted all GList's to GSList's, plus I don't anymore
store the desktop entry structures to save memory, plus I do a
fake menu read on startup so that submenus aren't read until a
user actually goes to them. Plus I fixed a race with gtk, my hack
for replacing menus during the select signal didn't all work so
that caused some menus to "hang", I solved it with a bigger hack
that removes and re-selects the entry if the menu has already been
shown.
* menu.c: changed logic for getting top directory icons
* launcher.[ch]: got rid of the load_launcher_applet_dentry func
* panel-util.[ch]: added a remove_directory call for recursively
cleaning a directory, and made string_in_list func be a GSList
function
1998-12-23 Carsten Schaar <nhadcasc@fs-maphy.uni-hannover.de>
* main.c (main): Fixed the error, that preventend the panel from
restoring a saved session, if it's used with gnome-session. Due
to some changes of Felix, the 'gnome_cloned_client' call does
nothing anymore, so the panel always thought, it has to restore
the default session.
Tue Dec 22 14:38:00 1998 George Lebl <jirka@5z.com>
* panel.c,panel-widget.c: with timeouts finally working on my box
I realized that 100ms for timeouts on moving is too much so
changed it back to 30ms
Tue Dec 22 02:10:51 1998 George Lebl <jirka@5z.com>
* menu.c: ok ok the redhat menu code now officially sucks and
will get changed, I fixed the weird menu bug by not doing a
check and reread of the menu. I think I'm gonna go a completely
different route on this redhat menu thing
* launcher.[ch]: added a way to make menu out of a desktop entry
by itself for added speed
Mon Dec 21 13:54:42 1998 George Lebl <jirka@5z.com>
* snapped-widget.c,corner-widget.c,drawer-widget.c,panel-util.[ch]:
now set color on the buttons as well if panel color is set, and
I stole some color stuff from gtk to make the colors be set
properly (instead of just multiplying rgb values)
Mon Dec 21 00:08:09 1998 George Lebl <jirka@5z.com>
* drawer-widget.c: implemented minimum size of 48 pixels so
that adding to an empty drawer is easier
Sun Dec 20 22:13:36 1998 George Lebl <jirka@5z.com>
* extern.[ch],main.c: took out synchronious applet startup code as
it didn't work anyhow and was taking up space
* menu.c,session.c,panel.c: changed menu properties to allow other
menu types then user/system (such as now redhat) ... plus I enabled
redhat menus as they seem stable and well behaved (dnd doesn't work
from them though)
Sun Dec 20 14:14:37 1998 George Lebl <jirka@5z.com>
* menu.c: replace connect_iterp with connect_full
Sun Dec 20 02:02:10 1998 George Lebl <jirka@5z.com>
* drawer.c: use icon entry
......
......@@ -3,6 +3,136 @@
* button-widget.c (button_widget_draw): Only draw if the tile is
non NULL.
Tue Dec 29 02:22:36 1998 George Lebl <jirka@5z.com>
* menu.c: couple of minor fixes
Mon Dec 28 20:57:33 1998 George Lebl <jirka@5z.com>
* menu.c: remove problematic string breaking routine and use the
gnome-config one, and fix a small memory leak
Mon Dec 28 00:26:52 1998 George Lebl <jirka@5z.com>
* applet-widget.c,panel.c: cosmetic code changes
1998-12-26 Martin Baulig <martin@home-of-linux.org>
* session.c (panel_config_sync): Set `applets_to_sync' back to
NULL before calling do_session_save (), to make it work when
called recursively.
Sat Dec 26 01:16:45 1998 George Lebl <jirka@5z.com>
* *.c: destroy signal is a void function, I always thought it
returned int, so I fixed that
Thu Dec 24 12:21:20 1998 George Lebl <jirka@5z.com>
* menu.c: don't load menu on startup for menu applets
* menu.[ch],session,panel.[ch],main.c,applet.[ch]: implement menu
aging, old menus are destroyed if not used for over a minute to
save memory
Thu Dec 24 04:05:25 1998 George Lebl <jirka@5z.com>
* menu.c: save a couple of extra bytes by not allocating a
string since we have a usable string that lasts long enough
Thu Dec 24 03:48:46 1998 George Lebl <jirka@5z.com>
* menu.c: create top level submenus as fakes, this saves even more
ram if the user never uses a menu
Thu Dec 24 03:37:05 1998 George Lebl <jirka@5z.com>
* drawer.[ch],session.c,menu.c: cleaned up params argument to be
an int, this is some old old cruft from about a year ago
* *.[ch]: minor cleanups, changed a bunch of GList's to GSList's
* panel.c: don't load the panel menu by default, load it when needed
* menu.[ch],session.c: got rid of the dot buttons and icons list,
now we just mark all menus as dirty, ready for rereading, this
saves us tuns of memory when the user doesn't use pixmaps or
dot_buttons .. and we also don't load all menus at startup
Wed Dec 23 22:53:40 1998 George Lebl <jirka@5z.com>
* menu.c: completely change how redhat menus are read, now they
are converted to normal gnome menus. also they are not fully
checked for additions, only the directories are checked so it
won't catch modified files, just added/removed files
* menu.c: converted all GList's to GSList's, plus I don't anymore
store the desktop entry structures to save memory, plus I do a
fake menu read on startup so that submenus aren't read until a
user actually goes to them. Plus I fixed a race with gtk, my hack
for replacing menus during the select signal didn't all work so
that caused some menus to "hang", I solved it with a bigger hack
that removes and re-selects the entry if the menu has already been
shown.
* menu.c: changed logic for getting top directory icons
* launcher.[ch]: got rid of the load_launcher_applet_dentry func
* panel-util.[ch]: added a remove_directory call for recursively
cleaning a directory, and made string_in_list func be a GSList
function
1998-12-23 Carsten Schaar <nhadcasc@fs-maphy.uni-hannover.de>
* main.c (main): Fixed the error, that preventend the panel from
restoring a saved session, if it's used with gnome-session. Due
to some changes of Felix, the 'gnome_cloned_client' call does
nothing anymore, so the panel always thought, it has to restore
the default session.
Tue Dec 22 14:38:00 1998 George Lebl <jirka@5z.com>
* panel.c,panel-widget.c: with timeouts finally working on my box
I realized that 100ms for timeouts on moving is too much so
changed it back to 30ms
Tue Dec 22 02:10:51 1998 George Lebl <jirka@5z.com>
* menu.c: ok ok the redhat menu code now officially sucks and
will get changed, I fixed the weird menu bug by not doing a
check and reread of the menu. I think I'm gonna go a completely
different route on this redhat menu thing
* launcher.[ch]: added a way to make menu out of a desktop entry
by itself for added speed
Mon Dec 21 13:54:42 1998 George Lebl <jirka@5z.com>
* snapped-widget.c,corner-widget.c,drawer-widget.c,panel-util.[ch]:
now set color on the buttons as well if panel color is set, and
I stole some color stuff from gtk to make the colors be set
properly (instead of just multiplying rgb values)
Mon Dec 21 00:08:09 1998 George Lebl <jirka@5z.com>
* drawer-widget.c: implemented minimum size of 48 pixels so
that adding to an empty drawer is easier
Sun Dec 20 22:13:36 1998 George Lebl <jirka@5z.com>
* extern.[ch],main.c: took out synchronious applet startup code as
it didn't work anyhow and was taking up space
* menu.c,session.c,panel.c: changed menu properties to allow other
menu types then user/system (such as now redhat) ... plus I enabled
redhat menus as they seem stable and well behaved (dnd doesn't work
from them though)
Sun Dec 20 14:14:37 1998 George Lebl <jirka@5z.com>
* menu.c: replace connect_iterp with connect_full
Sun Dec 20 02:02:10 1998 George Lebl <jirka@5z.com>
* drawer.c: use icon entry
......
......@@ -115,7 +115,6 @@ typedef void (*AppletWidgetTooltipSignal) (GtkObject * object,
int enabled,
gpointer data);
static GList *applet_widgets = NULL;
static int applet_count = 0;
static int do_multi = FALSE;
......@@ -327,18 +326,18 @@ applet_servant_destroy(CustomAppletServant *servant)
CORBA_exception_free(&ev);
}
static int
static void
applet_widget_destroy(GtkWidget *w, gpointer data)
{
AppletWidget *applet;
CORBA_Environment ev;
g_return_val_if_fail(w != NULL,FALSE);
g_return_val_if_fail(IS_APPLET_WIDGET(w),FALSE);
g_return_if_fail(w != NULL);
g_return_if_fail(IS_APPLET_WIDGET(w));
applet = APPLET_WIDGET(w);
if(!applet->privcfgpath)
return FALSE;
return;
g_free(applet->privcfgpath);
g_free(applet->globcfgpath);
......@@ -357,8 +356,6 @@ applet_widget_destroy(GtkWidget *w, gpointer data)
if(die_on_last && applet_count == 0)
applet_widget_gtk_main_quit();
return FALSE;
}
void
......@@ -787,6 +784,9 @@ applet_widget_set_widget_tooltip(AppletWidget *applet,
g_return_if_fail(widget != NULL);
g_return_if_fail(GTK_IS_WIDGET(widget));
if(!applet_tooltips)
applet_tooltips = gtk_tooltips_new();
gtk_tooltips_set_tip (applet_tooltips,widget,text,NULL);
}
......@@ -831,6 +831,7 @@ applet_widget_init(const char *app_id,
CORBA_Environment ev;
CORBA_ORB orb;
/*this is not called for shlib applets so we set it to true here*/
die_on_last = TRUE;
gnome_client_disable_master_connection ();
......@@ -841,8 +842,6 @@ applet_widget_init(const char *app_id,
CORBA_exception_free(&ev);
applet_tooltips = gtk_tooltips_new();
return ret;
}
......@@ -967,6 +966,9 @@ server_applet_set_tooltips_state(CustomAppletServant *servant,
CORBA_boolean enabled,
CORBA_Environment *ev)
{
if(!applet_tooltips)
applet_tooltips = gtk_tooltips_new();
if(enabled)
gtk_tooltips_enable(applet_tooltips);
else
......
......@@ -20,13 +20,15 @@
GDK_POINTER_MOTION_MASK | \
GDK_POINTER_MOTION_HINT_MASK)
GList *applets = NULL;
GList *applets_last = NULL;
extern GSList *panels;
GSList *applets = NULL;
GSList *applets_last = NULL;
int applet_count = 0;
/*config sync stuff*/
extern int config_sync_timeout;
extern GList *applets_to_sync;
extern GSList *applets_to_sync;
extern int panels_to_sync;
extern int globals_to_sync;
extern int need_complete_save;
......@@ -113,10 +115,10 @@ applet_callback_callback(GtkWidget *widget, gpointer data)
}
static void
applet_menu_deactivate(GtkWidget *w, gpointer data)
applet_menu_deactivate(GtkWidget *w, AppletInfo *info)
{
GtkWidget *applet = data;
GtkWidget *panel = get_panel_parent(applet);
GtkWidget *panel = get_panel_parent(info->widget);
info->menu_age = 0;
if(IS_SNAPPED_WIDGET(panel))
SNAPPED_WIDGET(panel)->autohide_inhibit = FALSE;
......@@ -170,8 +172,9 @@ applet_add_callback(AppletInfo *info,
menu->menuitem=NULL;
menu->submenu=NULL;
}
gtk_widget_unref(info->menu);
gtk_widget_destroy(info->menu);
info->menu=NULL;
info->menu_age = 0;
}
}
......@@ -201,8 +204,9 @@ applet_remove_callback(AppletInfo *info, char *callback_name)
menu->menuitem=NULL;
menu->submenu=NULL;
}
gtk_widget_unref(info->menu);
gtk_widget_destroy(info->menu);
info->menu=NULL;
info->menu_age = 0;
}
}
......@@ -320,7 +324,7 @@ create_applet_menu(AppletInfo *info)
when the menu is deactivated*/
gtk_signal_connect(GTK_OBJECT(info->menu),"deactivate",
GTK_SIGNAL_FUNC(applet_menu_deactivate),
info->widget);
info);
}
void
......@@ -339,6 +343,7 @@ show_applet_menu(AppletInfo *info, GdkEventButton *event)
SNAPPED_WIDGET(panel)->autohide_inhibit = TRUE;
snapped_widget_queue_pop_down(SNAPPED_WIDGET(panel));
}
info->menu_age = 0;
gtk_menu_popup(GTK_MENU(info->menu), NULL, NULL, applet_menu_position,
info, event->button, event->time);
}
......@@ -364,12 +369,12 @@ applet_button_press (GtkWidget *widget,GdkEventButton *event, AppletInfo *info)
return TRUE;
}
static int
static void
applet_destroy(GtkWidget *w, AppletInfo *info)
{
AppletType type;
g_return_val_if_fail(info != NULL,FALSE);
g_return_if_fail(info != NULL);
info->widget = NULL;
......@@ -384,8 +389,9 @@ applet_destroy(GtkWidget *w, AppletInfo *info)
}
}
if(info->menu) {
gtk_widget_unref(info->menu);
info->menu=NULL;
gtk_widget_destroy(info->menu);
info->menu = NULL;
info->menu_age = 0;
}
info->type = APPLET_EMPTY;
......@@ -404,8 +410,6 @@ applet_destroy(GtkWidget *w, AppletInfo *info)
g_free(umenu);
info->user_menu = my_g_list_pop_first(info->user_menu);
}
return FALSE;
}
int
......@@ -431,6 +435,7 @@ register_toy(GtkWidget *applet,
info->type = type;
info->widget = applet;
info->menu = NULL;
info->menu_age = 0;
info->data = data;
info->user_menu = NULL;
......@@ -454,33 +459,26 @@ register_toy(GtkWidget *applet,
gtk_object_set_data(GTK_OBJECT(applet),
PANEL_APPLET_FORBIDDEN_PANELS,NULL);
/*add to the array of applets*/
/*if(applets_last != applets) {
applets_last = g_list_append(applets_last,info);
if(!applets) {
applets_last = applets = g_slist_append(NULL,info);
} else {
applets_last = applets = g_list_append(applets,info);
}
if(applets_last->next)
applets_last = g_slist_append(applets_last,info);
applets_last = applets_last->next;
*/
/*cheap fix for broken logic above I guess, I just want to make
sure this was the problem*/
applets = g_list_append(applets,info);
applets_last = g_list_last(applets);
}
applet_count++;
/*we will need to save this applet's config now*/
if(g_list_find(applets_to_sync, info)==NULL)
applets_to_sync = g_list_prepend(applets_to_sync,info);
if(g_slist_find(applets_to_sync, info)==NULL)
applets_to_sync = g_slist_prepend(applets_to_sync,info);
if(panel_widget_add_full(panel, applet, pos, TRUE)==-1) {
GList *list;
for(list = panels; list != NULL; list = g_list_next(list))
GSList *list;
for(list = panels; list != NULL; list = g_slist_next(list))
if(panel_widget_add_full(panel, applet, pos, TRUE)!=-1)
break;
if(!list) {
/*can't put it anywhere, clean up*/
gtk_widget_unref(applet);
gtk_widget_destroy(applet);
info->widget = NULL;
panel_clean_applet(info);
g_warning("Can't find an empty spot");
......@@ -495,8 +493,7 @@ register_toy(GtkWidget *applet,
GTK_SIGNAL_FUNC(applet_button_press),
info);
gtk_signal_connect(GTK_OBJECT(applet),
"destroy",
gtk_signal_connect(GTK_OBJECT(applet), "destroy",
GTK_SIGNAL_FUNC(applet_destroy),
info);
......
......@@ -43,6 +43,7 @@ struct _AppletInfo {
int applet_id;
GtkWidget *widget; /*an event box*/
GtkWidget *menu; /*the applet menu*/
int menu_age;
GList *user_menu; /*list of AppletUserMenu items for callbacks*/
gpointer data; /*the per applet structure, if it exists*/
};
......
......@@ -232,7 +232,7 @@ button_widget_unmap (GtkWidget *widget)
GTK_WIDGET_CLASS (parent_class)->unmap (widget);
}
static int
static void
button_widget_destroy(GtkWidget *w, gpointer data)
{
ButtonWidget *button = BUTTON_WIDGET(w);
......@@ -245,8 +245,6 @@ button_widget_destroy(GtkWidget *w, gpointer data)
button->mask = NULL;
buttons = g_list_remove(buttons,button);
return FALSE;
}
static void
......
......@@ -89,54 +89,6 @@ marshal_signal_int (GtkObject * object,
func_data);
}
static void
set_frame_colors(CornerWidget *corner)
{
if(PANEL_WIDGET(corner->panel)->back_type == PANEL_BACK_COLOR) {
GdkColor n;
GtkStyle *ns;
ns = gtk_style_copy(corner->panel->style);
gtk_style_ref(ns);
ns->bg[GTK_STATE_NORMAL] =
PANEL_WIDGET(corner->panel)->back_color;
ns->base[GTK_STATE_NORMAL] =
PANEL_WIDGET(corner->panel)->back_color;
n = PANEL_WIDGET(corner->panel)->back_color;
n.red/=3;
n.green/=3;
n.blue/=3;
ns->dark[GTK_STATE_NORMAL] = n;
n = PANEL_WIDGET(corner->panel)->back_color;
n.red/=2;
n.green/=2;
n.blue/=2;
ns->mid[GTK_STATE_NORMAL] = n;
n = PANEL_WIDGET(corner->panel)->back_color;
n.red=MIN(65535,n.red*2);
n.green=MIN(65535,n.green*2);
n.blue=MIN(65535,n.blue*2);
ns->light[GTK_STATE_NORMAL] = n;
gtk_widget_set_style(corner->frame, ns);
gtk_style_unref(ns);
} else {
GtkStyle *ns;
ns = gtk_rc_get_style(corner->frame);
if(!ns) ns = gtk_style_new();
gtk_style_ref(ns);
gtk_widget_set_style(corner->frame, ns);
gtk_style_unref(ns);
}
}
static void
corner_widget_realize(GtkWidget *w)
{
......@@ -157,7 +109,12 @@ corner_widget_realize(GtkWidget *w)
gdk_window_set_decorations(w->window, 0);
}
set_frame_colors(corner);
set_frame_colors(PANEL_WIDGET(corner->panel),
corner->frame,
corner->hidebutton_n,
corner->hidebutton_e,
corner->hidebutton_w,
corner->hidebutton_s);
}
static void
......@@ -762,7 +719,12 @@ c_back_change(PanelWidget *panel,
GdkColor *color,
CornerWidget *corner)
{
set_frame_colors(corner);
set_frame_colors(PANEL_WIDGET(corner->panel),
corner->frame,
corner->hidebutton_n,
corner->hidebutton_e,
corner->hidebutton_w,
corner->hidebutton_s);
}
GtkWidget*
......
......@@ -89,55 +89,6 @@ marshal_signal_state (GtkObject * object,
func_data);
}
static void
set_frame_colors(DrawerWidget *drawer)
{
if(PANEL_WIDGET(drawer->panel)->back_type == PANEL_BACK_COLOR) {
GdkColor n;
GtkStyle *ns;
ns = gtk_style_copy(drawer->panel->style);
gtk_style_ref(ns);
ns->bg[GTK_STATE_NORMAL] =
PANEL_WIDGET(drawer->panel)->back_color;
ns->base[GTK_STATE_NORMAL] =
PANEL_WIDGET(drawer->panel)->back_color;
n = PANEL_WIDGET(drawer->panel)->back_color;
n.red/=3;
n.green/=3;
n.blue/=3;
ns->dark[GTK_STATE_NORMAL] = n;
n = PANEL_WIDGET(drawer->panel)->back_color;
n.red/=2;
n.green/=2;
n.blue/=2;
ns->mid[GTK_STATE_NORMAL] = n;
n = PANEL_WIDGET(drawer->panel)->back_color;
n.red=MIN(65535,n.red*2);
n.green=MIN(65535,n.green*2);
n.blue=MIN(65535,n.blue*2);
ns->light[GTK_STATE_NORMAL] = n;
gtk_widget_set_style(drawer->frame, ns);
gtk_style_unref(ns);
} else {
GtkStyle *ns;
ns = gtk_rc_get_style(drawer->frame);
if(!ns) ns = gtk_style_new();
gtk_style_ref(ns);
gtk_widget_set_style(drawer->frame, ns);
gtk_style_unref(ns);
}
}
static void
drawer_widget_realize(GtkWidget *w)
{
......@@ -157,7 +108,12 @@ drawer_widget_realize(GtkWidget *w)
gnome_win_hints_set_expanded_size(w, 0, 0, 0, 0);
gdk_window_set_decorations(w->window, 0);
}
set_frame_colors(drawer);
set_frame_colors(PANEL_WIDGET(drawer->panel),
drawer->frame,
drawer->handle_n,
drawer->handle_e,
drawer->handle_w,
drawer->handle_s);
}
static void
......@@ -199,6 +155,7 @@ drawer_widget_size_request(GtkWidget *widget,
GtkRequisition *requisition)
{
DrawerWidget *drawer = DRAWER_WIDGET(widget);
int w,h;
if(ignore_allocate)
return;
if(drawer_widget_request_cube) {
......@@ -210,8 +167,17 @@ drawer_widget_size_request(GtkWidget *widget,
gtk_widget_size_request (drawer->table, &drawer->table->requisition);
requisition->width = drawer->table->requisition.width;
requisition->height = drawer->table->requisition.height;
w = drawer->table->requisition.width;
h = drawer->table->requisition.height;
/* do a minimal 48 size*/
if(PANEL_WIDGET(drawer->panel)->orient == PANEL_HORIZONTAL) {
if(w<48) w=48;
} else {
if(h<48) h=48;
}
requisition->width = w;
requisition->height = h;
}
static void
......@@ -272,6 +238,7 @@ drawer_widget_size_allocate(GtkWidget *widget, GtkAllocation *allocation)
{
DrawerWidget *drawer = DRAWER_WIDGET(widget);
GtkAllocation challoc;
int w,h;
if(ignore_allocate)
return;
......@@ -280,9 +247,18 @@ drawer_widget_size_allocate(GtkWidget *widget, GtkAllocation *allocation)
a cube for the flicker prevention*/
gtk_widget_size_request (drawer->table, &drawer->table->requisition);
allocation->width = drawer->table->requisition.width;
allocation->height = drawer->table->requisition.height;
w = drawer->table->requisition.width;
h = drawer->table->requisition.height;
/* do a minimal 48 size*/
if(PANEL_WIDGET(drawer->panel)->orient == PANEL_HORIZONTAL) {
if(w<48) w=48;
} else {
if(h<48) h=48;
}
allocation->width = w;
allocation->height = h;
drawer_widget_get_pos(drawer,
&allocation->x,
&allocation->y,
......@@ -307,9 +283,46 @@ drawer_widget_size_allocate(GtkWidget *widget, GtkAllocation *allocation)
gtk_widget_size_allocate(drawer->table,&challoc);
}