mirror of
https://github.com/netsurf-browser/netsurf
synced 2024-12-24 13:06:49 +03:00
do not allocate toolbar items individually
This commit is contained in:
parent
3df34e7dec
commit
9cd9a403e6
@ -115,7 +115,7 @@ struct nsgtk_toolbar {
|
|||||||
/**
|
/**
|
||||||
* Toolbar item contexts
|
* Toolbar item contexts
|
||||||
*/
|
*/
|
||||||
struct nsgtk_toolbar_item *buttons[PLACEHOLDER_BUTTON];
|
struct nsgtk_toolbar_item items[PLACEHOLDER_BUTTON];
|
||||||
|
|
||||||
/** entry widget holding the url of the current displayed page */
|
/** entry widget holding the url of the current displayed page */
|
||||||
GtkWidget *url_bar;
|
GtkWidget *url_bar;
|
||||||
@ -176,7 +176,7 @@ struct nsgtk_toolbar_customisation {
|
|||||||
|
|
||||||
static bool edit_mode = false;
|
static bool edit_mode = false;
|
||||||
|
|
||||||
/* the number of buttons that fit in the width of the store window */
|
/* the number of items that fit in the width of the store window */
|
||||||
#define NSGTK_STORE_WIDTH 6
|
#define NSGTK_STORE_WIDTH 6
|
||||||
|
|
||||||
/* the 'standard' width of a button that makes sufficient of its label
|
/* the 'standard' width of a button that makes sufficient of its label
|
||||||
@ -213,7 +213,7 @@ struct nsgtk_theme {
|
|||||||
|
|
||||||
/* forward declaration */
|
/* forward declaration */
|
||||||
int nsgtk_toolbar_get_id_from_widget(GtkWidget *widget, struct nsgtk_scaffolding *g);
|
int nsgtk_toolbar_get_id_from_widget(GtkWidget *widget, struct nsgtk_scaffolding *g);
|
||||||
static nserror toolbar_item_create(nsgtk_toolbar_button id, struct nsgtk_toolbar_item **item_out);
|
static nserror toolbar_item_create(nsgtk_toolbar_button id, struct nsgtk_toolbar_item *item_out);
|
||||||
|
|
||||||
|
|
||||||
/* define data plus and data minus handlers */
|
/* define data plus and data minus handlers */
|
||||||
@ -805,7 +805,7 @@ nsgtk_toolbar_customisation_save(struct nsgtk_toolbar_customisation *tbc)
|
|||||||
order_len,
|
order_len,
|
||||||
"%d;%d|",
|
"%d;%d|",
|
||||||
tbidx,
|
tbidx,
|
||||||
tbc->toolbar.buttons[tbidx]->location);
|
tbc->toolbar.items[tbidx].location);
|
||||||
if (plen == order_len) {
|
if (plen == order_len) {
|
||||||
/* ran out of space, bail early */
|
/* ran out of space, bail early */
|
||||||
NSLOG(netsurf, INFO,
|
NSLOG(netsurf, INFO,
|
||||||
@ -841,7 +841,7 @@ itemid_from_location(struct nsgtk_toolbar *tb, int location)
|
|||||||
{
|
{
|
||||||
int iidx;
|
int iidx;
|
||||||
for (iidx = BACK_BUTTON; iidx < PLACEHOLDER_BUTTON; iidx++) {
|
for (iidx = BACK_BUTTON; iidx < PLACEHOLDER_BUTTON; iidx++) {
|
||||||
if (tb->buttons[iidx]->location == location) {
|
if (tb->items[iidx].location == location) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -860,15 +860,15 @@ static nserror
|
|||||||
toolbar_item_connect_signals(struct nsgtk_toolbar *tb, int itemid)
|
toolbar_item_connect_signals(struct nsgtk_toolbar *tb, int itemid)
|
||||||
{
|
{
|
||||||
/* set toolbar items to be a drag source */
|
/* set toolbar items to be a drag source */
|
||||||
gtk_tool_item_set_use_drag_window(tb->buttons[itemid]->button, TRUE);
|
gtk_tool_item_set_use_drag_window(tb->items[itemid].button, TRUE);
|
||||||
gtk_drag_source_set(GTK_WIDGET(tb->buttons[itemid]->button),
|
gtk_drag_source_set(GTK_WIDGET(tb->items[itemid].button),
|
||||||
GDK_BUTTON1_MASK,
|
GDK_BUTTON1_MASK,
|
||||||
&target_entry,
|
&target_entry,
|
||||||
1,
|
1,
|
||||||
GDK_ACTION_COPY);
|
GDK_ACTION_COPY);
|
||||||
g_signal_connect(tb->buttons[itemid]->button,
|
g_signal_connect(tb->items[itemid].button,
|
||||||
"drag-data-get",
|
"drag-data-get",
|
||||||
G_CALLBACK(tb->buttons[itemid]->dataminus),
|
G_CALLBACK(tb->items[itemid].dataminus),
|
||||||
tb);
|
tb);
|
||||||
return NSERROR_OK;
|
return NSERROR_OK;
|
||||||
}
|
}
|
||||||
@ -896,7 +896,7 @@ customisation_container_drag_drop_cb(GtkWidget *widget,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tbc->toolbar.buttons[tbc->dragitem]->location == INACTIVE_LOCATION) {
|
if (tbc->toolbar.items[tbc->dragitem].location == INACTIVE_LOCATION) {
|
||||||
tbc->dragitem = -1;
|
tbc->dragitem = -1;
|
||||||
gtk_drag_finish(gdc, TRUE, TRUE, time);
|
gtk_drag_finish(gdc, TRUE, TRUE, time);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -904,20 +904,20 @@ customisation_container_drag_drop_cb(GtkWidget *widget,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* update the locations for all the subsequent toolbar items */
|
/* update the locations for all the subsequent toolbar items */
|
||||||
for (location = tbc->toolbar.buttons[tbc->dragitem]->location;
|
for (location = tbc->toolbar.items[tbc->dragitem].location;
|
||||||
location < PLACEHOLDER_BUTTON;
|
location < PLACEHOLDER_BUTTON;
|
||||||
location++) {
|
location++) {
|
||||||
itemid = itemid_from_location(&tbc->toolbar, location);
|
itemid = itemid_from_location(&tbc->toolbar, location);
|
||||||
if (itemid == PLACEHOLDER_BUTTON) {
|
if (itemid == PLACEHOLDER_BUTTON) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
tbc->toolbar.buttons[itemid]->location--;
|
tbc->toolbar.items[itemid].location--;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* remove existing item */
|
/* remove existing item */
|
||||||
tbc->toolbar.buttons[tbc->dragitem]->location = -1;
|
tbc->toolbar.items[tbc->dragitem].location = -1;
|
||||||
gtk_container_remove(GTK_CONTAINER(tbc->toolbar.widget),
|
gtk_container_remove(GTK_CONTAINER(tbc->toolbar.widget),
|
||||||
GTK_WIDGET(tbc->toolbar.buttons[tbc->dragitem]->button));
|
GTK_WIDGET(tbc->toolbar.items[tbc->dragitem].button));
|
||||||
|
|
||||||
tbc->dragitem = -1;
|
tbc->dragitem = -1;
|
||||||
gtk_drag_finish(gdc, TRUE, TRUE, time);
|
gtk_drag_finish(gdc, TRUE, TRUE, time);
|
||||||
@ -968,7 +968,7 @@ customisation_toolbar_drag_drop_cb(GtkWidget *widget,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* pure conveiance variable */
|
/* pure conveiance variable */
|
||||||
dragitem = tbc->toolbar.buttons[tbc->dragitem];
|
dragitem = &tbc->toolbar.items[tbc->dragitem];
|
||||||
|
|
||||||
/* deal with replacing existing item in toolbar */
|
/* deal with replacing existing item in toolbar */
|
||||||
if (dragitem->location != INACTIVE_LOCATION) {
|
if (dragitem->location != INACTIVE_LOCATION) {
|
||||||
@ -984,7 +984,7 @@ customisation_toolbar_drag_drop_cb(GtkWidget *widget,
|
|||||||
if (itemid == PLACEHOLDER_BUTTON) {
|
if (itemid == PLACEHOLDER_BUTTON) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
tbc->toolbar.buttons[itemid]->location--;
|
tbc->toolbar.items[itemid].location--;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* remove existing item */
|
/* remove existing item */
|
||||||
@ -1014,7 +1014,7 @@ customisation_toolbar_drag_drop_cb(GtkWidget *widget,
|
|||||||
for (location = PLACEHOLDER_BUTTON; location >= position; location--) {
|
for (location = PLACEHOLDER_BUTTON; location >= position; location--) {
|
||||||
itemid = itemid_from_location(&tbc->toolbar, location);
|
itemid = itemid_from_location(&tbc->toolbar, location);
|
||||||
if (itemid != PLACEHOLDER_BUTTON) {
|
if (itemid != PLACEHOLDER_BUTTON) {
|
||||||
tbc->toolbar.buttons[itemid]->location++;
|
tbc->toolbar.items[itemid].location++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dragitem->location = position;
|
dragitem->location = position;
|
||||||
@ -1171,19 +1171,19 @@ apply_user_button_customisation(struct nsgtk_toolbar *tb)
|
|||||||
|
|
||||||
/* set all button locations to inactive */
|
/* set all button locations to inactive */
|
||||||
for (i = BACK_BUTTON; i < PLACEHOLDER_BUTTON; i++) {
|
for (i = BACK_BUTTON; i < PLACEHOLDER_BUTTON; i++) {
|
||||||
tb->buttons[i]->location = INACTIVE_LOCATION;
|
tb->items[i].location = INACTIVE_LOCATION;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if no user config is present apply the defaults */
|
/* if no user config is present apply the defaults */
|
||||||
if (nsoption_charp(toolbar_order) == NULL) {
|
if (nsoption_charp(toolbar_order) == NULL) {
|
||||||
tb->buttons[BACK_BUTTON]->location = 0;
|
tb->items[BACK_BUTTON].location = 0;
|
||||||
tb->buttons[HISTORY_BUTTON]->location = 1;
|
tb->items[HISTORY_BUTTON].location = 1;
|
||||||
tb->buttons[FORWARD_BUTTON]->location = 2;
|
tb->items[FORWARD_BUTTON].location = 2;
|
||||||
tb->buttons[STOP_BUTTON]->location = 3;
|
tb->items[STOP_BUTTON].location = 3;
|
||||||
tb->buttons[RELOAD_BUTTON]->location = 4;
|
tb->items[RELOAD_BUTTON].location = 4;
|
||||||
tb->buttons[URL_BAR_ITEM]->location = 5;
|
tb->items[URL_BAR_ITEM].location = 5;
|
||||||
tb->buttons[WEBSEARCH_ITEM]->location = 6;
|
tb->items[WEBSEARCH_ITEM].location = 6;
|
||||||
tb->buttons[THROBBER_ITEM]->location = 7;
|
tb->items[THROBBER_ITEM].location = 7;
|
||||||
|
|
||||||
return NSERROR_OK;
|
return NSERROR_OK;
|
||||||
}
|
}
|
||||||
@ -1207,7 +1207,7 @@ apply_user_button_customisation(struct nsgtk_toolbar *tb)
|
|||||||
(i < PLACEHOLDER_BUTTON) &&
|
(i < PLACEHOLDER_BUTTON) &&
|
||||||
(ii >= -1) &&
|
(ii >= -1) &&
|
||||||
(ii < PLACEHOLDER_BUTTON)) {
|
(ii < PLACEHOLDER_BUTTON)) {
|
||||||
tb->buttons[i]->location = ii;
|
tb->items[i].location = ii;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1236,13 +1236,13 @@ add_item_to_toolbar(struct nsgtk_toolbar *tb,
|
|||||||
|
|
||||||
for (bidx = BACK_BUTTON; bidx < PLACEHOLDER_BUTTON; bidx++) {
|
for (bidx = BACK_BUTTON; bidx < PLACEHOLDER_BUTTON; bidx++) {
|
||||||
|
|
||||||
if (tb->buttons[bidx]->location == location) {
|
if (tb->items[bidx].location == location) {
|
||||||
|
|
||||||
tb->buttons[bidx]->button = make_toolbar_item(
|
tb->items[bidx].button = make_toolbar_item(
|
||||||
bidx, theme, tb->buttons[bidx]->sensitivity);
|
bidx, theme, tb->items[bidx].sensitivity);
|
||||||
|
|
||||||
gtk_toolbar_insert(tb->widget,
|
gtk_toolbar_insert(tb->widget,
|
||||||
tb->buttons[bidx]->button,
|
tb->items[bidx].button,
|
||||||
location);
|
location);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1303,8 +1303,8 @@ itemid_from_gtktoolitem(struct nsgtk_toolbar *tb, GtkToolItem *toolitem)
|
|||||||
{
|
{
|
||||||
int iidx;
|
int iidx;
|
||||||
for (iidx = BACK_BUTTON; iidx < PLACEHOLDER_BUTTON; iidx++) {
|
for (iidx = BACK_BUTTON; iidx < PLACEHOLDER_BUTTON; iidx++) {
|
||||||
if ((tb->buttons[iidx]->location != INACTIVE_LOCATION) &&
|
if ((tb->items[iidx].location != INACTIVE_LOCATION) &&
|
||||||
(tb->buttons[iidx]->button == toolitem)) {
|
(tb->items[iidx].button == toolitem)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1445,7 +1445,7 @@ toolbar_customisation_connect_signals(struct nsgtk_toolbar *tb)
|
|||||||
|
|
||||||
for (iidx = BACK_BUTTON; iidx < PLACEHOLDER_BUTTON; iidx++) {
|
for (iidx = BACK_BUTTON; iidx < PLACEHOLDER_BUTTON; iidx++) {
|
||||||
/* skip inactive items in toolbar */
|
/* skip inactive items in toolbar */
|
||||||
if (tb->buttons[iidx]->location != INACTIVE_LOCATION) {
|
if (tb->items[iidx].location != INACTIVE_LOCATION) {
|
||||||
toolbar_item_connect_signals(tb, iidx);
|
toolbar_item_connect_signals(tb, iidx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1536,7 +1536,7 @@ add_toolbox_row(struct nsgtk_toolbar_customisation *tbc,
|
|||||||
GDK_ACTION_COPY);
|
GDK_ACTION_COPY);
|
||||||
g_signal_connect(tbc->items[iidx],
|
g_signal_connect(tbc->items[iidx],
|
||||||
"drag-data-get",
|
"drag-data-get",
|
||||||
G_CALLBACK(tbc->toolbar.buttons[iidx]->dataplus),
|
G_CALLBACK(tbc->toolbar.items[iidx].dataplus),
|
||||||
&tbc->toolbar);
|
&tbc->toolbar);
|
||||||
g_signal_connect(tbc->items[iidx],
|
g_signal_connect(tbc->items[iidx],
|
||||||
"size-allocate",
|
"size-allocate",
|
||||||
@ -1632,14 +1632,14 @@ customisation_toolbar_update(struct nsgtk_toolbar_customisation *tbc)
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tbc->toolbar.buttons[URL_BAR_ITEM]->location != INACTIVE_LOCATION) {
|
if (tbc->toolbar.items[URL_BAR_ITEM].location != INACTIVE_LOCATION) {
|
||||||
entry = GTK_ENTRY(gtk_bin_get_child(GTK_BIN(tbc->toolbar.buttons[URL_BAR_ITEM]->button)));
|
entry = GTK_ENTRY(gtk_bin_get_child(GTK_BIN(tbc->toolbar.items[URL_BAR_ITEM].button)));
|
||||||
|
|
||||||
gtk_widget_set_sensitive(GTK_WIDGET(entry), FALSE);
|
gtk_widget_set_sensitive(GTK_WIDGET(entry), FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tbc->toolbar.buttons[WEBSEARCH_ITEM]->location != INACTIVE_LOCATION) {
|
if (tbc->toolbar.items[WEBSEARCH_ITEM].location != INACTIVE_LOCATION) {
|
||||||
entry = GTK_ENTRY(gtk_bin_get_child(GTK_BIN(tbc->toolbar.buttons[WEBSEARCH_ITEM]->button)));
|
entry = GTK_ENTRY(gtk_bin_get_child(GTK_BIN(tbc->toolbar.items[WEBSEARCH_ITEM].button)));
|
||||||
|
|
||||||
gtk_widget_set_sensitive(GTK_WIDGET(entry), FALSE);
|
gtk_widget_set_sensitive(GTK_WIDGET(entry), FALSE);
|
||||||
}
|
}
|
||||||
@ -1753,14 +1753,11 @@ static gboolean cutomize_button_clicked_cb(GtkWidget *widget, gpointer data)
|
|||||||
gtk_toolbar_set_show_arrow(tbc->toolbar.widget, TRUE);
|
gtk_toolbar_set_show_arrow(tbc->toolbar.widget, TRUE);
|
||||||
|
|
||||||
for (iidx = BACK_BUTTON; iidx < PLACEHOLDER_BUTTON; iidx++) {
|
for (iidx = BACK_BUTTON; iidx < PLACEHOLDER_BUTTON; iidx++) {
|
||||||
res = toolbar_item_create(iidx, &tbc->toolbar.buttons[iidx]);
|
res = toolbar_item_create(iidx, &tbc->toolbar.items[iidx]);
|
||||||
if (res != NSERROR_OK) {
|
if (res != NSERROR_OK) {
|
||||||
for (iidx-- ; iidx >= BACK_BUTTON; iidx--) {
|
|
||||||
free(tbc->toolbar.buttons[iidx]);
|
|
||||||
}
|
|
||||||
goto cutomize_button_clicked_cb_error;
|
goto cutomize_button_clicked_cb_error;
|
||||||
}
|
}
|
||||||
tbc->toolbar.buttons[iidx]->sensitivity = true;
|
tbc->toolbar.items[iidx].sensitivity = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
res = customisation_toolbar_update(tbc);
|
res = customisation_toolbar_update(tbc);
|
||||||
@ -1864,7 +1861,7 @@ toolbar_item_size_allocate_cb(GtkWidget *widget,
|
|||||||
itemid = itemid_from_gtktoolitem(tb, GTK_TOOL_ITEM(widget));
|
itemid = itemid_from_gtktoolitem(tb, GTK_TOOL_ITEM(widget));
|
||||||
|
|
||||||
if ((tb->toolbarmem == alloc->x) ||
|
if ((tb->toolbarmem == alloc->x) ||
|
||||||
(tb->buttons[itemid]->location < tb->buttons[HISTORY_BUTTON]->location)) {
|
(tb->items[itemid].location < tb->items[HISTORY_BUTTON].location)) {
|
||||||
/*
|
/*
|
||||||
* no reallocation after first adjustment,
|
* no reallocation after first adjustment,
|
||||||
* no reallocation for buttons left of history button
|
* no reallocation for buttons left of history button
|
||||||
@ -1883,7 +1880,7 @@ toolbar_item_size_allocate_cb(GtkWidget *widget,
|
|||||||
tb->offset = alloc->width - 20;
|
tb->offset = alloc->width - 20;
|
||||||
}
|
}
|
||||||
alloc->width = 20;
|
alloc->width = 20;
|
||||||
} else if (tb->buttons[itemid]->location <= tb->buttons[URL_BAR_ITEM]->location) {
|
} else if (tb->items[itemid].location <= tb->items[URL_BAR_ITEM].location) {
|
||||||
alloc->x -= tb->offset;
|
alloc->x -= tb->offset;
|
||||||
if (itemid == URL_BAR_ITEM) {
|
if (itemid == URL_BAR_ITEM) {
|
||||||
alloc->width += tb->offset;
|
alloc->width += tb->offset;
|
||||||
@ -1916,9 +1913,9 @@ back_button_clicked_cb(GtkWidget *widget, gpointer data)
|
|||||||
|
|
||||||
browser_window_history_back(bw, false);
|
browser_window_history_back(bw, false);
|
||||||
|
|
||||||
set_item_sensitivity(tb->buttons[BACK_BUTTON],
|
set_item_sensitivity(&tb->items[BACK_BUTTON],
|
||||||
browser_window_history_back_available(bw));
|
browser_window_history_back_available(bw));
|
||||||
set_item_sensitivity(tb->buttons[FORWARD_BUTTON],
|
set_item_sensitivity(&tb->items[FORWARD_BUTTON],
|
||||||
browser_window_history_forward_available(bw));
|
browser_window_history_forward_available(bw));
|
||||||
|
|
||||||
nsgtk_local_history_hide();
|
nsgtk_local_history_hide();
|
||||||
@ -1948,9 +1945,9 @@ forward_button_clicked_cb(GtkWidget *widget, gpointer data)
|
|||||||
|
|
||||||
browser_window_history_forward(bw, false);
|
browser_window_history_forward(bw, false);
|
||||||
|
|
||||||
set_item_sensitivity(tb->buttons[BACK_BUTTON],
|
set_item_sensitivity(&tb->items[BACK_BUTTON],
|
||||||
browser_window_history_back_available(bw));
|
browser_window_history_back_available(bw));
|
||||||
set_item_sensitivity(tb->buttons[FORWARD_BUTTON],
|
set_item_sensitivity(&tb->items[FORWARD_BUTTON],
|
||||||
browser_window_history_forward_available(bw));
|
browser_window_history_forward_available(bw));
|
||||||
nsgtk_local_history_hide();
|
nsgtk_local_history_hide();
|
||||||
}
|
}
|
||||||
@ -3128,7 +3125,7 @@ openlocation_button_clicked_cb(GtkWidget *widget, gpointer data)
|
|||||||
struct nsgtk_toolbar *tb = (struct nsgtk_toolbar *)data;
|
struct nsgtk_toolbar *tb = (struct nsgtk_toolbar *)data;
|
||||||
GtkToolItem *urltitem;
|
GtkToolItem *urltitem;
|
||||||
|
|
||||||
urltitem = tb->buttons[URL_BAR_ITEM]->button;
|
urltitem = tb->items[URL_BAR_ITEM].button;
|
||||||
if (urltitem != NULL) {
|
if (urltitem != NULL) {
|
||||||
GtkEntry *entry;
|
GtkEntry *entry;
|
||||||
entry = GTK_ENTRY(gtk_bin_get_child(GTK_BIN(urltitem)));
|
entry = GTK_ENTRY(gtk_bin_get_child(GTK_BIN(urltitem)));
|
||||||
@ -3249,14 +3246,8 @@ static gboolean openmenu_button_clicked_cb(GtkWidget *widget, gpointer data)
|
|||||||
* create a toolbar item and set up its default handlers
|
* create a toolbar item and set up its default handlers
|
||||||
*/
|
*/
|
||||||
static nserror
|
static nserror
|
||||||
toolbar_item_create(nsgtk_toolbar_button id,
|
toolbar_item_create(nsgtk_toolbar_button id, struct nsgtk_toolbar_item *item)
|
||||||
struct nsgtk_toolbar_item **item_out)
|
|
||||||
{
|
{
|
||||||
struct nsgtk_toolbar_item *item;
|
|
||||||
item = calloc(1, sizeof(struct nsgtk_toolbar_item));
|
|
||||||
if (item == NULL) {
|
|
||||||
return NSERROR_NOMEM;
|
|
||||||
}
|
|
||||||
item->location = INACTIVE_LOCATION;
|
item->location = INACTIVE_LOCATION;
|
||||||
|
|
||||||
/* set item defaults from macro */
|
/* set item defaults from macro */
|
||||||
@ -3278,11 +3269,9 @@ toolbar_item_create(nsgtk_toolbar_button id,
|
|||||||
#undef TOOLBAR_ITEM
|
#undef TOOLBAR_ITEM
|
||||||
|
|
||||||
case PLACEHOLDER_BUTTON:
|
case PLACEHOLDER_BUTTON:
|
||||||
free(item);
|
|
||||||
return NSERROR_INVALID;
|
return NSERROR_INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
*item_out = item;
|
|
||||||
return NSERROR_OK;
|
return NSERROR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3334,11 +3323,11 @@ static void next_throbber_frame(void *p)
|
|||||||
|
|
||||||
tb->throb_frame++; /* advance to next frame */
|
tb->throb_frame++; /* advance to next frame */
|
||||||
|
|
||||||
res = set_throbber_frame(tb->buttons[THROBBER_ITEM]->button,
|
res = set_throbber_frame(tb->items[THROBBER_ITEM].button,
|
||||||
tb->throb_frame);
|
tb->throb_frame);
|
||||||
if (res == NSERROR_BAD_SIZE) {
|
if (res == NSERROR_BAD_SIZE) {
|
||||||
tb->throb_frame = 1;
|
tb->throb_frame = 1;
|
||||||
res = set_throbber_frame(tb->buttons[THROBBER_ITEM]->button,
|
res = set_throbber_frame(tb->items[THROBBER_ITEM].button,
|
||||||
tb->throb_frame);
|
tb->throb_frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3358,7 +3347,7 @@ toolbar_connect_signal(struct nsgtk_toolbar *tb, nsgtk_toolbar_button itemid)
|
|||||||
struct nsgtk_toolbar_item *item;
|
struct nsgtk_toolbar_item *item;
|
||||||
GtkEntry *entry;
|
GtkEntry *entry;
|
||||||
|
|
||||||
item = tb->buttons[itemid];
|
item = &tb->items[itemid];
|
||||||
|
|
||||||
if (item->button != NULL) {
|
if (item->button != NULL) {
|
||||||
g_signal_connect(item->button,
|
g_signal_connect(item->button,
|
||||||
@ -3495,11 +3484,8 @@ nsgtk_toolbar_create(GtkBuilder *builder,
|
|||||||
|
|
||||||
/* allocate button contexts */
|
/* allocate button contexts */
|
||||||
for (bidx = BACK_BUTTON; bidx < PLACEHOLDER_BUTTON; bidx++) {
|
for (bidx = BACK_BUTTON; bidx < PLACEHOLDER_BUTTON; bidx++) {
|
||||||
res = toolbar_item_create(bidx, &tb->buttons[bidx]);
|
res = toolbar_item_create(bidx, &tb->items[bidx]);
|
||||||
if (res != NSERROR_OK) {
|
if (res != NSERROR_OK) {
|
||||||
for (bidx-- ; bidx >= BACK_BUTTON; bidx--) {
|
|
||||||
free(tb->buttons[bidx]);
|
|
||||||
}
|
|
||||||
free(tb);
|
free(tb);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
@ -3581,8 +3567,8 @@ nserror nsgtk_toolbar_throbber(struct nsgtk_toolbar *tb, bool active)
|
|||||||
if (active) {
|
if (active) {
|
||||||
nsgtk_schedule(THROBBER_FRAME_TIME, next_throbber_frame, tb);
|
nsgtk_schedule(THROBBER_FRAME_TIME, next_throbber_frame, tb);
|
||||||
|
|
||||||
set_item_sensitivity(tb->buttons[STOP_BUTTON], true);
|
set_item_sensitivity(&tb->items[STOP_BUTTON], true);
|
||||||
set_item_sensitivity(tb->buttons[RELOAD_BUTTON], false);
|
set_item_sensitivity(&tb->items[RELOAD_BUTTON], false);
|
||||||
|
|
||||||
return NSERROR_OK;
|
return NSERROR_OK;
|
||||||
}
|
}
|
||||||
@ -3590,15 +3576,15 @@ nserror nsgtk_toolbar_throbber(struct nsgtk_toolbar *tb, bool active)
|
|||||||
/* stopping the throbber */
|
/* stopping the throbber */
|
||||||
nsgtk_schedule(-1, next_throbber_frame, tb);
|
nsgtk_schedule(-1, next_throbber_frame, tb);
|
||||||
tb->throb_frame = 0;
|
tb->throb_frame = 0;
|
||||||
res = set_throbber_frame(tb->buttons[THROBBER_ITEM]->button,
|
res = set_throbber_frame(tb->items[THROBBER_ITEM].button,
|
||||||
tb->throb_frame);
|
tb->throb_frame);
|
||||||
|
|
||||||
/* adjust sensitivity of other items */
|
/* adjust sensitivity of other items */
|
||||||
set_item_sensitivity(tb->buttons[STOP_BUTTON], false);
|
set_item_sensitivity(&tb->items[STOP_BUTTON], false);
|
||||||
set_item_sensitivity(tb->buttons[RELOAD_BUTTON], true);
|
set_item_sensitivity(&tb->items[RELOAD_BUTTON], true);
|
||||||
set_item_sensitivity(tb->buttons[BACK_BUTTON],
|
set_item_sensitivity(&tb->items[BACK_BUTTON],
|
||||||
browser_window_history_back_available(bw));
|
browser_window_history_back_available(bw));
|
||||||
set_item_sensitivity(tb->buttons[FORWARD_BUTTON],
|
set_item_sensitivity(&tb->items[FORWARD_BUTTON],
|
||||||
browser_window_history_forward_available(bw));
|
browser_window_history_forward_available(bw));
|
||||||
nsgtk_local_history_hide();
|
nsgtk_local_history_hide();
|
||||||
|
|
||||||
@ -3614,11 +3600,11 @@ nserror nsgtk_toolbar_set_url(struct nsgtk_toolbar *tb, nsurl *url)
|
|||||||
const char *url_text = NULL;
|
const char *url_text = NULL;
|
||||||
GtkEntry *url_entry;
|
GtkEntry *url_entry;
|
||||||
|
|
||||||
if (tb->buttons[URL_BAR_ITEM]->button == NULL) {
|
if (tb->items[URL_BAR_ITEM].button == NULL) {
|
||||||
/* no toolbar item */
|
/* no toolbar item */
|
||||||
return NSERROR_INVALID;
|
return NSERROR_INVALID;
|
||||||
}
|
}
|
||||||
url_entry = GTK_ENTRY(gtk_bin_get_child(GTK_BIN(tb->buttons[URL_BAR_ITEM]->button)));
|
url_entry = GTK_ENTRY(gtk_bin_get_child(GTK_BIN(tb->items[URL_BAR_ITEM].button)));
|
||||||
|
|
||||||
if (nsoption_bool(display_decoded_idn) == true) {
|
if (nsoption_bool(display_decoded_idn) == true) {
|
||||||
if (nsurl_get_utf8(url, &idn_url_s, &idn_url_l) != NSERROR_OK) {
|
if (nsurl_get_utf8(url, &idn_url_s, &idn_url_l) != NSERROR_OK) {
|
||||||
@ -3647,12 +3633,12 @@ nsgtk_toolbar_set_websearch_image(struct nsgtk_toolbar *tb, GdkPixbuf *pixbuf)
|
|||||||
{
|
{
|
||||||
GtkWidget *entry;
|
GtkWidget *entry;
|
||||||
|
|
||||||
if (tb->buttons[WEBSEARCH_ITEM]->button == NULL) {
|
if (tb->items[WEBSEARCH_ITEM].button == NULL) {
|
||||||
/* no toolbar item */
|
/* no toolbar item */
|
||||||
return NSERROR_INVALID;
|
return NSERROR_INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
entry = gtk_bin_get_child(GTK_BIN(tb->buttons[WEBSEARCH_ITEM]->button));
|
entry = gtk_bin_get_child(GTK_BIN(tb->items[WEBSEARCH_ITEM].button));
|
||||||
|
|
||||||
if (pixbuf != NULL) {
|
if (pixbuf != NULL) {
|
||||||
nsgtk_entry_set_icon_from_pixbuf(entry,
|
nsgtk_entry_set_icon_from_pixbuf(entry,
|
||||||
@ -3680,7 +3666,7 @@ nsgtk_toolbar_item_activate(struct nsgtk_toolbar *tb,
|
|||||||
return NSERROR_BAD_PARAMETER;
|
return NSERROR_BAD_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tb->buttons[itemid]->bhandler == NULL) {
|
if (tb->items[itemid].bhandler == NULL) {
|
||||||
return NSERROR_INVALID;
|
return NSERROR_INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3688,13 +3674,13 @@ nsgtk_toolbar_item_activate(struct nsgtk_toolbar *tb,
|
|||||||
* if item has a widget in the current toolbar use that as the
|
* if item has a widget in the current toolbar use that as the
|
||||||
* signal source otherwise use the toolbar widget itself.
|
* signal source otherwise use the toolbar widget itself.
|
||||||
*/
|
*/
|
||||||
if (tb->buttons[itemid]->button != NULL) {
|
if (tb->items[itemid].button != NULL) {
|
||||||
widget = GTK_WIDGET(tb->buttons[itemid]->button);
|
widget = GTK_WIDGET(tb->items[itemid].button);
|
||||||
} else {
|
} else {
|
||||||
widget = GTK_WIDGET(tb->widget);
|
widget = GTK_WIDGET(tb->widget);
|
||||||
}
|
}
|
||||||
|
|
||||||
tb->buttons[itemid]->bhandler(widget, tb);
|
tb->items[itemid].bhandler(widget, tb);
|
||||||
|
|
||||||
return NSERROR_OK;
|
return NSERROR_OK;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user