Added support to close tabs with middle button.

This commit is contained in:
David Capello 2008-10-16 02:19:00 +00:00
parent f43bbec69d
commit 77b06bf748
5 changed files with 23 additions and 12 deletions

View File

@ -1,5 +1,8 @@
2008-10-15 David A. Capello <davidcapello@gmail.com>
* src/core/app.cpp (tabsbar_select_callback): Added support to
close files with middle-button.
* src/dialogs/filesel.cpp (ase_file_selector): Better handling of
special file-names in the entry field (filename_entry).

View File

@ -97,7 +97,7 @@ static JWidget tabsbar = NULL; /* the tabs bar widget */
static JList options; /* list of "Option" structures (options to execute) */
static char *palette_filename = NULL;
static void tabsbar_select_callback(JWidget tabs, void *data);
static void tabsbar_select_callback(JWidget tabs, void *data, int button);
static int check_args(int argc, char *argv[]);
static void usage(int status);
@ -555,10 +555,16 @@ int app_get_color_to_clear_layer(Layer *layer)
return get_color_for_layer(layer, color);
}
static void tabsbar_select_callback(JWidget tabs, void *data)
static void tabsbar_select_callback(JWidget tabs, void *data, int button)
{
/* data can be NULL (the "Nothing" tab) */
// Note: data can be NULL (the "Nothing" tab)
// put as current sprite
sprite_show((Sprite *)data);
// middle button: close the sprite
if (data && (button & 4))
command_execute(command_get_by_name(CMD_CLOSE_FILE), NULL);
}
/**

View File

@ -72,7 +72,7 @@ static void colorselector_set_color2(JWidget widget, color_t color,
static void colorselector_set_paledit_index(JWidget widget, int index,
bool select_index_entry);
static void select_tab_callback(JWidget tabs, void* data);
static void select_tab_callback(JWidget tabs, void* data, int button);
static bool slider_change_hook(JWidget widget, void* data);
static bool button_mask_select_hook(JWidget widget, void* data);
static bool paledit_change_hook(JWidget widget, void* data);
@ -363,7 +363,7 @@ static void colorselector_set_color2(JWidget widget, color_t color,
}
tabs_select_tab(tabs, m);
select_tab_callback(tabs, m);
select_tab_callback(tabs, m, 1);
if (update_index_entry) {
switch (color_type(color)) {
@ -420,7 +420,7 @@ static void colorselector_set_paledit_index(JWidget widget, int index, bool sele
jwidget_set_text(idx, buf);
}
static void select_tab_callback(JWidget tabs, void* data)
static void select_tab_callback(JWidget tabs, void* data, int button)
{
JWidget window = jwidget_get_window(tabs);
Model* selected_model = (Model*)data;

View File

@ -47,7 +47,7 @@ typedef struct Tabs
JList list_of_tabs;
Tab *hot;
Tab *selected;
void (*select_callback)(JWidget tabs, void *data);
void (*select_callback)(JWidget tabs, void *data, int button);
int timer_id;
int scroll_x;
/* int hot_arrow; */
@ -73,7 +73,7 @@ static void tab_free(Tab *tab);
/* Tabs */
/**************************************************************/
JWidget tabs_new(void (*select_callback)(JWidget tabs, void *data))
JWidget tabs_new(void (*select_callback)(JWidget tabs, void *data, int button))
{
JWidget widget = jwidget_new(tabs_type());
Tabs *tabs = jnew0(Tabs, 1);
@ -302,10 +302,12 @@ static bool tabs_msg_proc(JWidget widget, JMessage msg)
if (tabs->selected != tabs->hot && tabs->hot != NULL) {
tabs->selected = tabs->hot;
jwidget_dirty(widget);
if (tabs->selected && tabs->select_callback)
(*tabs->select_callback)(widget, tabs->selected->data);
}
if (tabs->selected && tabs->select_callback)
(*tabs->select_callback)(widget,
tabs->selected->data,
msg->mouse.flags);
return TRUE;
case JM_WHEEL: {

View File

@ -21,7 +21,7 @@
#include "jinete/jbase.h"
JWidget tabs_new(void (*select_callback)(JWidget tabs, void *data));
JWidget tabs_new(void (*select_callback)(JWidget tabs, void *data, int button));
void tabs_append_tab(JWidget widget, const char *text, void *data);
void tabs_remove_tab(JWidget widget, void *data);