Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
GNOME
GIMP
Commits
eb26d8e0
Commit
eb26d8e0
authored
Oct 24, 1999
by
Sven Neumann
Browse files
autoscroll in the layers dialog, a few cosmetic changes
and a german plug-in po-file --Sven
parent
2df06061
Changes
10
Expand all
Hide whitespace changes
Inline
Side-by-side
ChangeLog
View file @
eb26d8e0
Sun Oct 24 22:10:16 MEST 1999 Sven Neumann <sven@gimp.org>
* app/channels_dialog.c
* app/layers_dialog.c
* app/lc_dialogP.h
* app/paths_dialog.c: some cosmetic changes. The layers dialog now
automatically scrolls to keep the active layer in view. This is
disabled in the channels dialog until I figure out why it doesn't
work there.
Sun Oct 24 15:24:15 MEST 1999 Sven Neumann <sven@gimp.org>
* libgimp/gimpexport.c: get rid of remaining (invisible) layers
...
...
app/channels_dialog.c
View file @
eb26d8e0
...
...
@@ -50,19 +50,6 @@
#include
"channel_pvt.h"
#define PREVIEW_EVENT_MASK GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | \
GDK_ENTER_NOTIFY_MASK
#define BUTTON_EVENT_MASK GDK_EXPOSURE_MASK | GDK_ENTER_NOTIFY_MASK | \
GDK_LEAVE_NOTIFY_MASK | GDK_BUTTON_PRESS_MASK | \
GDK_BUTTON_RELEASE_MASK
#define CHANNEL_LIST_WIDTH 200
#define CHANNEL_LIST_HEIGHT 150
#define NORMAL 0
#define SELECTED 1
#define INSENSITIVE 2
#define COMPONENT_BASE_ID 0x10000000
typedef
struct
_ChannelsDialog
ChannelsDialog
;
...
...
@@ -71,6 +58,7 @@ struct _ChannelsDialog
{
GtkWidget
*
vbox
;
GtkWidget
*
channel_list
;
GtkWidget
*
scrolled_win
;
GtkWidget
*
preview
;
GtkWidget
*
ops_menu
;
GtkAccelGroup
*
accel_group
;
...
...
@@ -113,6 +101,7 @@ struct _ChannelWidget
/* channels dialog widget routines */
static
void
channels_dialog_preview_extents
(
void
);
static
void
channels_dialog_set_menu_sensitivity
(
void
);
static
void
channels_dialog_scroll_index
(
gint
index
);
static
void
channels_dialog_set_channel
(
ChannelWidget
*
);
static
void
channels_dialog_unset_channel
(
ChannelWidget
*
);
static
void
channels_dialog_position_channel
(
Channel
*
,
gint
);
...
...
@@ -248,7 +237,6 @@ GtkWidget *
channels_dialog_create
()
{
GtkWidget
*
vbox
;
GtkWidget
*
listbox
;
GtkWidget
*
button_box
;
if
(
channelsD
)
...
...
@@ -272,18 +260,18 @@ channels_dialog_create ()
channelsD
->
vbox
=
vbox
=
gtk_vbox_new
(
FALSE
,
1
);
gtk_container_set_border_width
(
GTK_CONTAINER
(
vbox
),
2
);
/* The
layer
s commands pulldown menu */
/* The
channel
s commands pulldown menu */
menus_get_channels_menu
(
&
channelsD
->
ops_menu
,
&
channelsD
->
accel_group
);
/* The channels listbox */
listbox
=
gtk_scrolled_window_new
(
NULL
,
NULL
);
gtk_scrolled_window_set_policy
(
GTK_SCROLLED_WINDOW
(
listbox
),
channelsD
->
scrolled_win
=
gtk_scrolled_window_new
(
NULL
,
NULL
);
gtk_scrolled_window_set_policy
(
GTK_SCROLLED_WINDOW
(
channelsD
->
scrolled_win
),
GTK_POLICY_AUTOMATIC
,
GTK_POLICY_ALWAYS
);
gtk_widget_set_usize
(
listbox
,
CHANNEL_
LIST_WIDTH
,
CHANNEL_
LIST_HEIGHT
);
gtk_box_pack_start
(
GTK_BOX
(
vbox
),
listbox
,
TRUE
,
TRUE
,
2
);
gtk_widget_set_usize
(
channelsD
->
scrolled_win
,
LIST_WIDTH
,
LIST_HEIGHT
);
gtk_box_pack_start
(
GTK_BOX
(
vbox
),
channelsD
->
scrolled_win
,
TRUE
,
TRUE
,
2
);
channelsD
->
channel_list
=
gtk_list_new
();
gtk_scrolled_window_add_with_viewport
(
GTK_SCROLLED_WINDOW
(
listbox
),
gtk_scrolled_window_add_with_viewport
(
GTK_SCROLLED_WINDOW
(
channelsD
->
scrolled_win
),
channelsD
->
channel_list
);
gtk_list_set_selection_mode
(
GTK_LIST
(
channelsD
->
channel_list
),
GTK_SELECTION_MULTIPLE
);
...
...
@@ -291,12 +279,12 @@ channels_dialog_create ()
(
GtkSignalFunc
)
channel_list_events
,
channelsD
);
gtk_container_set_focus_vadjustment
(
GTK_CONTAINER
(
channelsD
->
channel_list
),
gtk_scrolled_window_get_vadjustment
(
GTK_SCROLLED_WINDOW
(
listbox
)));
GTK_WIDGET_UNSET_FLAGS
(
GTK_SCROLLED_WINDOW
(
listbox
)
->
vscrollbar
,
gtk_scrolled_window_get_vadjustment
(
GTK_SCROLLED_WINDOW
(
channelsD
->
scrolled_win
)));
GTK_WIDGET_UNSET_FLAGS
(
GTK_SCROLLED_WINDOW
(
channelsD
->
scrolled_win
)
->
vscrollbar
,
GTK_CAN_FOCUS
);
gtk_widget_show
(
channelsD
->
channel_list
);
gtk_widget_show
(
listbox
);
gtk_widget_show
(
channelsD
->
scrolled_win
);
/* The ops buttons */
button_box
=
ops_button_box_new
(
lc_dialog
->
shell
,
tool_tips
,
...
...
@@ -650,6 +638,27 @@ channels_dialog_set_menu_sensitivity ()
#undef SET_SENSITIVE
}
static
void
channels_dialog_scroll_index
(
gint
index
)
{
GtkAdjustment
*
adj
;
gint
item_height
;
item_height
=
6
+
(
preview_size
?
preview_size
:
channel_height
);
adj
=
gtk_scrolled_window_get_vadjustment
(
GTK_SCROLLED_WINDOW
(
channelsD
->
scrolled_win
));
if
(
index
*
item_height
<
adj
->
value
)
{
adj
->
value
=
index
*
item_height
;
gtk_adjustment_value_changed
(
adj
);
}
else
if
((
index
+
1
)
*
item_height
>
adj
->
value
+
adj
->
page_size
)
{
adj
->
value
=
(
index
+
1
)
*
item_height
-
adj
->
page_size
;
gtk_adjustment_value_changed
(
adj
);
}
}
static
void
channels_dialog_set_channel
(
ChannelWidget
*
channel_widget
)
{
...
...
@@ -678,6 +687,7 @@ channels_dialog_set_channel (ChannelWidget *channel_widget)
index
+
channelsD
->
num_components
);
gtk_object_set_user_data
(
GTK_OBJECT
(
channel_widget
->
list_item
),
channel_widget
);
/* channels_dialog_scroll_index (index + channelsD->num_components); */
}
}
else
...
...
@@ -705,6 +715,7 @@ channels_dialog_set_channel (ChannelWidget *channel_widget)
gtk_object_set_user_data
(
GTK_OBJECT
(
channel_widget
->
list_item
),
channel_widget
);
/* channels_dialog_scroll_index (0); */
}
}
suspend_gimage_notify
--
;
...
...
@@ -802,6 +813,10 @@ channels_dialog_position_channel (Channel *channel,
g_slist_insert
(
channelsD
->
channel_widgets
,
channel_widget
,
new_index
+
channelsD
->
num_components
);
/* channels_dialog_scroll_index (new_index > 0 ? */
/* new_index + channelsD->num_components + 1 : */
/* channelsD->num_components); */
suspend_gimage_notify
--
;
}
...
...
@@ -855,7 +870,6 @@ channel_list_events (GtkWidget *widget,
GdkEvent
*
event
)
{
ChannelWidget
*
channel_widget
;
GdkEventKey
*
kevent
;
GdkEventButton
*
bevent
;
GtkWidget
*
event_widget
;
...
...
@@ -884,21 +898,6 @@ channel_list_events (GtkWidget *widget,
}
break
;
case
GDK_KEY_PRESS
:
kevent
=
(
GdkEventKey
*
)
event
;
switch
(
kevent
->
keyval
)
{
case
GDK_Up
:
/* g_print ("up arrow\n"); */
break
;
case
GDK_Down
:
/* g_print ("down arrow\n"); */
break
;
default:
return
FALSE
;
}
return
FALSE
;
default:
break
;
}
...
...
app/gui/channels-dialog.c
View file @
eb26d8e0
...
...
@@ -50,19 +50,6 @@
#include
"channel_pvt.h"
#define PREVIEW_EVENT_MASK GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | \
GDK_ENTER_NOTIFY_MASK
#define BUTTON_EVENT_MASK GDK_EXPOSURE_MASK | GDK_ENTER_NOTIFY_MASK | \
GDK_LEAVE_NOTIFY_MASK | GDK_BUTTON_PRESS_MASK | \
GDK_BUTTON_RELEASE_MASK
#define CHANNEL_LIST_WIDTH 200
#define CHANNEL_LIST_HEIGHT 150
#define NORMAL 0
#define SELECTED 1
#define INSENSITIVE 2
#define COMPONENT_BASE_ID 0x10000000
typedef
struct
_ChannelsDialog
ChannelsDialog
;
...
...
@@ -71,6 +58,7 @@ struct _ChannelsDialog
{
GtkWidget
*
vbox
;
GtkWidget
*
channel_list
;
GtkWidget
*
scrolled_win
;
GtkWidget
*
preview
;
GtkWidget
*
ops_menu
;
GtkAccelGroup
*
accel_group
;
...
...
@@ -113,6 +101,7 @@ struct _ChannelWidget
/* channels dialog widget routines */
static
void
channels_dialog_preview_extents
(
void
);
static
void
channels_dialog_set_menu_sensitivity
(
void
);
static
void
channels_dialog_scroll_index
(
gint
index
);
static
void
channels_dialog_set_channel
(
ChannelWidget
*
);
static
void
channels_dialog_unset_channel
(
ChannelWidget
*
);
static
void
channels_dialog_position_channel
(
Channel
*
,
gint
);
...
...
@@ -248,7 +237,6 @@ GtkWidget *
channels_dialog_create
()
{
GtkWidget
*
vbox
;
GtkWidget
*
listbox
;
GtkWidget
*
button_box
;
if
(
channelsD
)
...
...
@@ -272,18 +260,18 @@ channels_dialog_create ()
channelsD
->
vbox
=
vbox
=
gtk_vbox_new
(
FALSE
,
1
);
gtk_container_set_border_width
(
GTK_CONTAINER
(
vbox
),
2
);
/* The
layer
s commands pulldown menu */
/* The
channel
s commands pulldown menu */
menus_get_channels_menu
(
&
channelsD
->
ops_menu
,
&
channelsD
->
accel_group
);
/* The channels listbox */
listbox
=
gtk_scrolled_window_new
(
NULL
,
NULL
);
gtk_scrolled_window_set_policy
(
GTK_SCROLLED_WINDOW
(
listbox
),
channelsD
->
scrolled_win
=
gtk_scrolled_window_new
(
NULL
,
NULL
);
gtk_scrolled_window_set_policy
(
GTK_SCROLLED_WINDOW
(
channelsD
->
scrolled_win
),
GTK_POLICY_AUTOMATIC
,
GTK_POLICY_ALWAYS
);
gtk_widget_set_usize
(
listbox
,
CHANNEL_
LIST_WIDTH
,
CHANNEL_
LIST_HEIGHT
);
gtk_box_pack_start
(
GTK_BOX
(
vbox
),
listbox
,
TRUE
,
TRUE
,
2
);
gtk_widget_set_usize
(
channelsD
->
scrolled_win
,
LIST_WIDTH
,
LIST_HEIGHT
);
gtk_box_pack_start
(
GTK_BOX
(
vbox
),
channelsD
->
scrolled_win
,
TRUE
,
TRUE
,
2
);
channelsD
->
channel_list
=
gtk_list_new
();
gtk_scrolled_window_add_with_viewport
(
GTK_SCROLLED_WINDOW
(
listbox
),
gtk_scrolled_window_add_with_viewport
(
GTK_SCROLLED_WINDOW
(
channelsD
->
scrolled_win
),
channelsD
->
channel_list
);
gtk_list_set_selection_mode
(
GTK_LIST
(
channelsD
->
channel_list
),
GTK_SELECTION_MULTIPLE
);
...
...
@@ -291,12 +279,12 @@ channels_dialog_create ()
(
GtkSignalFunc
)
channel_list_events
,
channelsD
);
gtk_container_set_focus_vadjustment
(
GTK_CONTAINER
(
channelsD
->
channel_list
),
gtk_scrolled_window_get_vadjustment
(
GTK_SCROLLED_WINDOW
(
listbox
)));
GTK_WIDGET_UNSET_FLAGS
(
GTK_SCROLLED_WINDOW
(
listbox
)
->
vscrollbar
,
gtk_scrolled_window_get_vadjustment
(
GTK_SCROLLED_WINDOW
(
channelsD
->
scrolled_win
)));
GTK_WIDGET_UNSET_FLAGS
(
GTK_SCROLLED_WINDOW
(
channelsD
->
scrolled_win
)
->
vscrollbar
,
GTK_CAN_FOCUS
);
gtk_widget_show
(
channelsD
->
channel_list
);
gtk_widget_show
(
listbox
);
gtk_widget_show
(
channelsD
->
scrolled_win
);
/* The ops buttons */
button_box
=
ops_button_box_new
(
lc_dialog
->
shell
,
tool_tips
,
...
...
@@ -650,6 +638,27 @@ channels_dialog_set_menu_sensitivity ()
#undef SET_SENSITIVE
}
static
void
channels_dialog_scroll_index
(
gint
index
)
{
GtkAdjustment
*
adj
;
gint
item_height
;
item_height
=
6
+
(
preview_size
?
preview_size
:
channel_height
);
adj
=
gtk_scrolled_window_get_vadjustment
(
GTK_SCROLLED_WINDOW
(
channelsD
->
scrolled_win
));
if
(
index
*
item_height
<
adj
->
value
)
{
adj
->
value
=
index
*
item_height
;
gtk_adjustment_value_changed
(
adj
);
}
else
if
((
index
+
1
)
*
item_height
>
adj
->
value
+
adj
->
page_size
)
{
adj
->
value
=
(
index
+
1
)
*
item_height
-
adj
->
page_size
;
gtk_adjustment_value_changed
(
adj
);
}
}
static
void
channels_dialog_set_channel
(
ChannelWidget
*
channel_widget
)
{
...
...
@@ -678,6 +687,7 @@ channels_dialog_set_channel (ChannelWidget *channel_widget)
index
+
channelsD
->
num_components
);
gtk_object_set_user_data
(
GTK_OBJECT
(
channel_widget
->
list_item
),
channel_widget
);
/* channels_dialog_scroll_index (index + channelsD->num_components); */
}
}
else
...
...
@@ -705,6 +715,7 @@ channels_dialog_set_channel (ChannelWidget *channel_widget)
gtk_object_set_user_data
(
GTK_OBJECT
(
channel_widget
->
list_item
),
channel_widget
);
/* channels_dialog_scroll_index (0); */
}
}
suspend_gimage_notify
--
;
...
...
@@ -802,6 +813,10 @@ channels_dialog_position_channel (Channel *channel,
g_slist_insert
(
channelsD
->
channel_widgets
,
channel_widget
,
new_index
+
channelsD
->
num_components
);
/* channels_dialog_scroll_index (new_index > 0 ? */
/* new_index + channelsD->num_components + 1 : */
/* channelsD->num_components); */
suspend_gimage_notify
--
;
}
...
...
@@ -855,7 +870,6 @@ channel_list_events (GtkWidget *widget,
GdkEvent
*
event
)
{
ChannelWidget
*
channel_widget
;
GdkEventKey
*
kevent
;
GdkEventButton
*
bevent
;
GtkWidget
*
event_widget
;
...
...
@@ -884,21 +898,6 @@ channel_list_events (GtkWidget *widget,
}
break
;
case
GDK_KEY_PRESS
:
kevent
=
(
GdkEventKey
*
)
event
;
switch
(
kevent
->
keyval
)
{
case
GDK_Up
:
/* g_print ("up arrow\n"); */
break
;
case
GDK_Down
:
/* g_print ("down arrow\n"); */
break
;
default:
return
FALSE
;
}
return
FALSE
;
default:
break
;
}
...
...
app/gui/layers-dialog.c
View file @
eb26d8e0
...
...
@@ -59,23 +59,10 @@
#include
"layer_pvt.h"
#define PREVIEW_EVENT_MASK GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | \
GDK_ENTER_NOTIFY_MASK
#define BUTTON_EVENT_MASK GDK_EXPOSURE_MASK | GDK_ENTER_NOTIFY_MASK | \
GDK_LEAVE_NOTIFY_MASK | GDK_BUTTON_PRESS_MASK | \
GDK_BUTTON_RELEASE_MASK
#define LAYER_LIST_WIDTH 200
#define LAYER_LIST_HEIGHT 150
#define LAYER_PREVIEW 0
#define MASK_PREVIEW 1
#define FS_PREVIEW 2
#define NORMAL 0
#define SELECTED 1
#define INSENSITIVE 2
typedef
struct
_LayersDialog
LayersDialog
;
struct
_LayersDialog
...
...
@@ -83,6 +70,7 @@ struct _LayersDialog
GtkWidget
*
vbox
;
GtkWidget
*
mode_option_menu
;
GtkWidget
*
layer_list
;
GtkWidget
*
scrolled_win
;
GtkWidget
*
preserve_trans
;
GtkWidget
*
mode_box
;
GtkWidget
*
opacity_box
;
...
...
@@ -137,6 +125,7 @@ struct _LayerWidget
/* layers dialog widget routines */
static
void
layers_dialog_preview_extents
(
void
);
static
void
layers_dialog_set_menu_sensitivity
(
void
);
static
void
layers_dialog_scroll_index
(
gint
index
);
static
void
layers_dialog_set_active_layer
(
Layer
*
);
static
void
layers_dialog_unset_layer
(
Layer
*
);
static
void
layers_dialog_position_layer
(
Layer
*
,
gint
);
...
...
@@ -149,22 +138,22 @@ static void paint_mode_menu_callback (GtkWidget *, gpointer);
static
gint
paint_mode_menu_get_position
(
gint
);
static
void
opacity_scale_update
(
GtkAdjustment
*
,
gpointer
);
static
void
preserve_trans_update
(
GtkWidget
*
,
gpointer
);
static
gint
layer_list_events
(
GtkWidget
*
,
GdkEvent
*
);
static
gint
layer_list_events
(
GtkWidget
*
,
GdkEvent
*
,
gpointer
);
/* for (un)installing the menu accelarators */
static
void
layers_dialog_map_callback
(
GtkWidget
*
,
gpointer
);
static
void
layers_dialog_unmap_callback
(
GtkWidget
*
,
gpointer
);
static
void
layers_dialog_map_callback
(
GtkWidget
*
,
gpointer
);
static
void
layers_dialog_unmap_callback
(
GtkWidget
*
,
gpointer
);
/* ops buttons dnd callbacks */
static
gboolean
layers_dialog_drag_new_layer_callback
(
GtkWidget
*
,
GdkDragContext
*
,
gint
,
gint
,
guint
);
static
gboolean
layers_dialog_drag_new_layer_callback
(
GtkWidget
*
,
GdkDragContext
*
,
gint
,
gint
,
guint
);
static
gboolean
layers_dialog_drag_duplicate_layer_callback
(
GtkWidget
*
,
GdkDragContext
*
,
gint
,
gint
,
guint
);
static
gboolean
layers_dialog_drag_trashcan_callback
(
GtkWidget
*
,
GdkDragContext
*
,
gint
,
gint
,
guint
);
static
gboolean
layers_dialog_drag_trashcan_callback
(
GtkWidget
*
,
GdkDragContext
*
,
gint
,
gint
,
guint
);
/* layer widget function prototypes */
static
LayerWidget
*
layer_widget_get_ID
(
Layer
*
);
...
...
@@ -324,8 +313,7 @@ layers_dialog_create ()
GtkWidget
*
label
;
GtkWidget
*
menu
;
GtkWidget
*
slider
;
GtkWidget
*
listbox
;
if
(
layersD
)
return
layersD
->
vbox
;
...
...
@@ -401,27 +389,27 @@ layers_dialog_create ()
gtk_widget_show
(
util_box
);
/* The layers listbox */
l
istbox
=
gtk_scrolled_window_new
(
NULL
,
NULL
);
gtk_scrolled_window_set_policy
(
GTK_SCROLLED_WINDOW
(
l
istbox
),
l
ayersD
->
scrolled_win
=
gtk_scrolled_window_new
(
NULL
,
NULL
);
gtk_scrolled_window_set_policy
(
GTK_SCROLLED_WINDOW
(
l
ayersD
->
scrolled_win
),
GTK_POLICY_AUTOMATIC
,
GTK_POLICY_ALWAYS
);
gtk_widget_set_usize
(
l
istbox
,
LAYER_
LIST_WIDTH
,
LAYER_
LIST_HEIGHT
);
gtk_box_pack_start
(
GTK_BOX
(
vbox
),
l
istbox
,
TRUE
,
TRUE
,
2
);
gtk_widget_set_usize
(
l
ayersD
->
scrolled_win
,
LIST_WIDTH
,
LIST_HEIGHT
);
gtk_box_pack_start
(
GTK_BOX
(
vbox
),
l
ayersD
->
scrolled_win
,
TRUE
,
TRUE
,
2
);
layersD
->
layer_list
=
gtk_list_new
();
gtk_scrolled_window_add_with_viewport
(
GTK_SCROLLED_WINDOW
(
l
istbox
),
gtk_scrolled_window_add_with_viewport
(
GTK_SCROLLED_WINDOW
(
l
ayersD
->
scrolled_win
),
layersD
->
layer_list
);
gtk_list_set_selection_mode
(
GTK_LIST
(
layersD
->
layer_list
),
GTK_SELECTION_BROWSE
);
gtk_signal_connect
(
GTK_OBJECT
(
layersD
->
layer_list
),
"event"
,
(
GtkSignalFunc
)
layer_list_events
,
(
GtkSignalFunc
)
layer_list_events
,
layersD
);
gtk_container_set_focus_vadjustment
(
GTK_CONTAINER
(
layersD
->
layer_list
),
gtk_scrolled_window_get_vadjustment
(
GTK_SCROLLED_WINDOW
(
l
istbox
)));
GTK_WIDGET_UNSET_FLAGS
(
GTK_SCROLLED_WINDOW
(
l
istbox
)
->
vscrollbar
,
gtk_container_set_focus_vadjustment
(
GTK_CONTAINER
(
layersD
->
layer_list
),
gtk_scrolled_window_get_vadjustment
(
GTK_SCROLLED_WINDOW
(
l
ayersD
->
scrolled_win
)));
GTK_WIDGET_UNSET_FLAGS
(
GTK_SCROLLED_WINDOW
(
l
ayersD
->
scrolled_win
)
->
vscrollbar
,
GTK_CAN_FOCUS
);
gtk_widget_show
(
layersD
->
layer_list
);
gtk_widget_show
(
l
istbox
);
gtk_widget_show
(
l
ayersD
->
scrolled_win
);
/* The ops buttons */
button_box
=
ops_button_box_new
(
lc_dialog
->
shell
,
tool_tips
,
...
...
@@ -1058,6 +1046,27 @@ layers_dialog_set_menu_sensitivity ()
gtk_widget_set_sensitive
(
layersD
->
mode_box
,
lp
);
}
static
void
layers_dialog_scroll_index
(
gint
index
)
{
GtkAdjustment
*
adj
;
gint
item_height
;
item_height
=
6
+
(
preview_size
?
preview_size
:
layer_height
);
adj
=
gtk_scrolled_window_get_vadjustment
(
GTK_SCROLLED_WINDOW
(
layersD
->
scrolled_win
));
if
(
index
*
item_height
<
adj
->
value
)
{
adj
->
value
=
index
*
item_height
;
gtk_adjustment_value_changed
(
adj
);
}
else
if
((
index
+
1
)
*
item_height
>
adj
->
value
+
adj
->
page_size
)
{
adj
->
value
=
(
index
+
1
)
*
item_height
-
adj
->
page_size
;
gtk_adjustment_value_changed
(
adj
);
}
}
static
void
layers_dialog_set_active_layer
(
Layer
*
layer
)
{
...
...
@@ -1079,6 +1088,8 @@ layers_dialog_set_active_layer (Layer *layer)
gtk_object_set_user_data
(
GTK_OBJECT
(
layer_widget
->
list_item
),
NULL
);
gtk_list_select_item
(
GTK_LIST
(
layersD
->
layer_list
),
index
);
gtk_object_set_user_data
(
GTK_OBJECT
(
layer_widget
->
list_item
),
layer_widget
);
layers_dialog_scroll_index
(
index
);
}
suspend_gimage_notify
--
;
...
...
@@ -1137,6 +1148,10 @@ layers_dialog_position_layer (Layer *layer,
gtk_list_insert_items
(
GTK_LIST
(
layersD
->
layer_list
),
list
,
new_index
);
layersD
->
layer_widgets
=
g_slist_insert
(
layersD
->
layer_widgets
,
layer_widget
,
new_index
);
/* Adjust the scrollbar so the layer is visible */
layers_dialog_scroll_index
(
new_index
>
0
?
new_index
+
1
:
0
);
suspend_gimage_notify
--
;
}
...
...
@@ -1314,20 +1329,21 @@ preserve_trans_update (GtkWidget *widget,
layer
->
preserve_trans
=
FALSE
;
}
/********************************/
/* layer list events callback */
/********************************/
static
gint
layer_list_events
(
GtkWidget
*
widget
,
GdkEvent
*
event
)
GdkEvent
*
event
,
gpointer
data
)
{
GdkEventKey
*
kevent
;
GdkEventButton
*
bevent
;
GtkWidget
*
event_widget
;
LayerWidget
*
layer_widget
;
event_widget
=
gtk_get_event_widget
(
event
);
event_widget
=
gtk_get_event_widget
(
event
);
if
(
GTK_IS_LIST_ITEM
(
event_widget
))
{
...
...
@@ -1347,27 +1363,11 @@ layer_list_events (GtkWidget *widget,
return
TRUE
;
}
break
;
case
GDK_2BUTTON_PRESS
:
bevent
=
(
GdkEventButton
*
)
event
;
layers_dialog_edit_layer_query
(
layer_widget
);
return
TRUE
;
case
GDK_KEY_PRESS
:
kevent
=
(
GdkEventKey
*
)
event
;
switch
(
kevent
->
keyval
)
{
case
GDK_Up
:
/* g_print ("up arrow\n"); */
break
;
case
GDK_Down
:
/* g_print ("down arrow\n"); */
break
;
default:
return
FALSE
;
}
return
FALSE
;
default:
break
;
}
...
...
app/gui/paths-dialog.c
View file @
eb26d8e0
This diff is collapsed.
Click to expand it.
app/layers_dialog.c
View file @
eb26d8e0
...
...
@@ -59,23 +59,10 @@
#include
"layer_pvt.h"
#define PREVIEW_EVENT_MASK GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | \
GDK_ENTER_NOTIFY_MASK
#define BUTTON_EVENT_MASK GDK_EXPOSURE_MASK | GDK_ENTER_NOTIFY_MASK | \
GDK_LEAVE_NOTIFY_MASK | GDK_BUTTON_PRESS_MASK | \
GDK_BUTTON_RELEASE_MASK
#define LAYER_LIST_WIDTH 200
#define LAYER_LIST_HEIGHT 150
#define LAYER_PREVIEW 0
#define MASK_PREVIEW 1
#define FS_PREVIEW 2
#define NORMAL 0
#define SELECTED 1
#define INSENSITIVE 2
typedef
struct
_LayersDialog
LayersDialog
;
struct
_LayersDialog
...
...
@@ -83,6 +70,7 @@ struct _LayersDialog
GtkWidget
*
vbox
;
GtkWidget
*
mode_option_menu
;
GtkWidget
*
layer_list
;
GtkWidget
*
scrolled_win
;
GtkWidget
*
preserve_trans
;
GtkWidget
*
mode_box
;
GtkWidget
*
opacity_box
;
...
...
@@ -137,6 +125,7 @@ struct _LayerWidget
/* layers dialog widget routines */
static
void
layers_dialog_preview_extents
(
void
);
static
void
layers_dialog_set_menu_sensitivity
(
void
);
static
void
layers_dialog_scroll_index
(
gint
index
);
static
void
layers_dialog_set_active_layer
(
Layer
*
);
static
void
layers_dialog_unset_layer
(
Layer
*
);
static
void
layers_dialog_position_layer
(
Layer
*
,
gint
);
...
...
@@ -149,22 +138,22 @@ static void paint_mode_menu_callback (GtkWidget *, gpointer);
static
gint
paint_mode_menu_get_position
(
gint
);
static
void
opacity_scale_update
(
GtkAdjustment
*
,
gpointer
);
static
void
preserve_trans_update
(
GtkWidget
*
,
gpointer
);
static
gint
layer_list_events
(
GtkWidget
*
,
GdkEvent
*
);
static
gint
layer_list_events
(
GtkWidget
*
,
GdkEvent
*
,
gpointer
);
/* for (un)installing the menu accelarators */
static
void
layers_dialog_map_callback
(
GtkWidget
*
,
gpointer
);
static
void
layers_dialog_unmap_callback
(
GtkWidget
*
,
gpointer
);
static
void
layers_dialog_map_callback
(
GtkWidget
*
,
gpointer
);
static
void
layers_dialog_unmap_callback
(
GtkWidget
*
,
gpointer
);
/* ops buttons dnd callbacks */
static
gboolean
layers_dialog_drag_new_layer_callback
(
GtkWidget
*
,
GdkDragContext
*
,
gint
,
gint
,
guint
);
static
gboolean
layers_dialog_drag_new_layer_callback
(
GtkWidget
*
,
GdkDragContext
*
,
gint
,
gint
,
guint
);
static
gboolean
layers_dialog_drag_duplicate_layer_callback
(
GtkWidget
*
,
GdkDragContext
*
,
gint
,
gint
,
guint
);
static
gboolean
layers_dialog_drag_trashcan_callback
(
GtkWidget
*
,
GdkDragContext
*
,
gint
,
gint
,
guint
);
static
gboolean
layers_dialog_drag_trashcan_callback
(
GtkWidget
*
,
GdkDragContext
*
,
gint
,
gint
,
guint
);