libgimpwidgets/gimpbutton.c libgimpwidgets/gimpcolorarea.c

2001-11-28  Michael Natterer  <mitch@gimp.org>

	* libgimpwidgets/gimpbutton.c
	* libgimpwidgets/gimpcolorarea.c
	* libgimpwidgets/gimpcolorbutton.c
	* libgimpwidgets/gimpoffsetarea.c: fixed button_press event handling,
	removed double g_return_if_fail()s, misc. cleanup.

	* app/display/gimpdisplayshell.c: removed the SET_COLOR() stuff
	here...

	* app/gui/menus.c: ...and added it here so it actually works.

	* app/widgets/gimpcolorpanel.c: add color previews to the
	item_factory.

	* app/widgets/gimpdockbook.c: use the item_factory functions now
	that they are in widgets/.

	* app/widgets/gimpitemfactory.[ch]: nothing, we just want to keep
	the RCS hirtory.
This commit is contained in:
Michael Natterer 2001-11-27 23:26:25 +00:00 committed by Michael Natterer
parent 7933764758
commit ae06cd2dda
13 changed files with 1193 additions and 2664 deletions

View File

@ -1,3 +1,25 @@
2001-11-28 Michael Natterer <mitch@gimp.org>
* libgimpwidgets/gimpbutton.c
* libgimpwidgets/gimpcolorarea.c
* libgimpwidgets/gimpcolorbutton.c
* libgimpwidgets/gimpoffsetarea.c: fixed button_press event handling,
removed double g_return_if_fail()s, misc. cleanup.
* app/display/gimpdisplayshell.c: removed the SET_COLOR() stuff
here...
* app/gui/menus.c: ...and added it here so it actually works.
* app/widgets/gimpcolorpanel.c: add color previews to the
item_factory.
* app/widgets/gimpdockbook.c: use the item_factory functions now
that they are in widgets/.
* app/widgets/gimpitemfactory.[ch]: nothing, we just want to keep
the RCS hirtory.
2001-11-27 Daniel Egger <degger@fhm.edu>
* app/paint-funcs/paint-funcs-generic.h

View File

@ -962,8 +962,6 @@ gimp_display_shell_set_menu_sensitivity (GimpDisplayShell *shell)
#define SET_ACTIVE(menu,condition) \
gimp_menu_item_set_active ("<Image>/" menu, (condition) != 0)
#define SET_COLOR(menu,color) \
gimp_menu_item_set_color ("<Image>/" menu, (color), FALSE)
#define SET_SENSITIVE(menu,condition) \
gimp_menu_item_set_sensitive ("<Image>/" menu, (condition) != 0)
@ -1000,9 +998,6 @@ gimp_display_shell_set_menu_sensitivity (GimpDisplayShell *shell)
SET_SENSITIVE ("Edit/Fill with FG Color", lp);
SET_SENSITIVE ("Edit/Fill with BG Color", lp);
SET_SENSITIVE ("Edit/Stroke", lp);
SET_COLOR ("Edit/Fill with FG Color", &fg);
SET_COLOR ("Edit/Fill with BG Color", &bg);
}
SET_SENSITIVE ("Select", gdisp && lp);
@ -1088,7 +1083,6 @@ gimp_display_shell_set_menu_sensitivity (GimpDisplayShell *shell)
SET_SENSITIVE ("Script-Fu", gdisp && lp);
#undef SET_ACTIVE
#undef SET_COLOR
#undef SET_SENSITIVE
plug_in_set_menu_sensitivity (type);

View File

@ -962,8 +962,6 @@ gimp_display_shell_set_menu_sensitivity (GimpDisplayShell *shell)
#define SET_ACTIVE(menu,condition) \
gimp_menu_item_set_active ("<Image>/" menu, (condition) != 0)
#define SET_COLOR(menu,color) \
gimp_menu_item_set_color ("<Image>/" menu, (color), FALSE)
#define SET_SENSITIVE(menu,condition) \
gimp_menu_item_set_sensitive ("<Image>/" menu, (condition) != 0)
@ -1000,9 +998,6 @@ gimp_display_shell_set_menu_sensitivity (GimpDisplayShell *shell)
SET_SENSITIVE ("Edit/Fill with FG Color", lp);
SET_SENSITIVE ("Edit/Fill with BG Color", lp);
SET_SENSITIVE ("Edit/Stroke", lp);
SET_COLOR ("Edit/Fill with FG Color", &fg);
SET_COLOR ("Edit/Fill with BG Color", &bg);
}
SET_SENSITIVE ("Select", gdisp && lp);
@ -1088,7 +1083,6 @@ gimp_display_shell_set_menu_sensitivity (GimpDisplayShell *shell)
SET_SENSITIVE ("Script-Fu", gdisp && lp);
#undef SET_ACTIVE
#undef SET_COLOR
#undef SET_SENSITIVE
plug_in_set_menu_sensitivity (type);

View File

@ -30,6 +30,7 @@
#include "gui-types.h"
#include "core/gimp.h"
#include "core/gimpcontext.h"
#include "core/gimplist.h"
#include "core/gimptoolinfo.h"
@ -79,19 +80,21 @@ static void menus_tools_create (GimpToolInfo *tool_info)
static void menus_last_opened_update_labels (GimpContainer *container,
GimpImagefile *unused,
Gimp *gimp);
static void menus_color_changed (GimpContext *context,
const GimpRGB *unused,
Gimp *gimp);
#ifdef ENABLE_DEBUG_ENTRY
static void menus_debug_recurse_menu (GtkWidget *menu,
gint depth,
gchar *path);
static void menus_debug_cmd_callback (GtkWidget *widget,
gpointer data,
guint action);
static void menus_debug_recurse_menu (GtkWidget *menu,
gint depth,
gchar *path);
static void menus_debug_cmd_callback (GtkWidget *widget,
gpointer data,
guint action);
#endif /* ENABLE_DEBUG_ENTRY */
#define SEPARATOR(path) \
{ { (path), NULL, NULL, 0, "<Separator>" }, NULL, NULL, NULL }
#define BRANCH(path) \
{ { (path), NULL, NULL, 0, "<Branch>" }, NULL, NULL, NULL }
@ -280,14 +283,12 @@ static GimpItemFactoryEntry toolbox_entries[] =
{ { N_("/Help/Mem Profile"), NULL,
mem_profile_cmd_callback, 0 },
NULL,
NULL, NULL },
NULL, NULL, NULL }
#ifdef ENABLE_DEBUG_ENTRY
{ { "/Help/Dump Items (Debug)", NULL,
menus_debug_cmd_callback, 0 },
NULL,
NULL, NULL }
, { { "/Help/Dump Items (Debug)", NULL,
menus_debug_cmd_callback, 0 },
NULL, NULL, NULL }
#endif
};
@ -297,8 +298,7 @@ static GimpItemFactoryEntry toolbox_entries[] =
static GimpItemFactoryEntry image_entries[] =
{
{ { "/tearoff1", NULL, gimp_item_factory_tearoff_callback, 0, "<Tearoff>" },
NULL,
NULL, NULL },
NULL, NULL, NULL },
/* <Image>/File */
@ -1989,6 +1989,17 @@ menus_init (Gimp *gimp)
gimp);
menus_last_opened_update_labels (gimp->documents, NULL, gimp);
g_signal_connect (G_OBJECT (gimp_get_user_context (gimp)),
"foreground_changed",
G_CALLBACK (menus_color_changed),
gimp);
g_signal_connect (G_OBJECT (gimp_get_user_context (gimp)),
"background_changed",
G_CALLBACK (menus_color_changed),
gimp);
menus_color_changed (gimp_get_user_context (gimp), NULL, gimp);
}
void
@ -2418,6 +2429,21 @@ menus_last_opened_update_labels (GimpContainer *container,
}
}
static void
menus_color_changed (GimpContext *context,
const GimpRGB *unused,
Gimp *gimp)
{
GimpRGB fg;
GimpRGB bg;
gimp_context_get_foreground (context, &fg);
gimp_context_get_background (context, &bg);
gimp_menu_item_set_color ("<Image>/Edit/Fill with FG Color", &fg, FALSE);
gimp_menu_item_set_color ("<Image>/Edit/Fill with BG Color", &bg, FALSE);
}
#ifdef ENABLE_DEBUG_ENTRY

View File

@ -30,6 +30,7 @@
#include "gui-types.h"
#include "core/gimp.h"
#include "core/gimpcontext.h"
#include "core/gimplist.h"
#include "core/gimptoolinfo.h"
@ -79,19 +80,21 @@ static void menus_tools_create (GimpToolInfo *tool_info)
static void menus_last_opened_update_labels (GimpContainer *container,
GimpImagefile *unused,
Gimp *gimp);
static void menus_color_changed (GimpContext *context,
const GimpRGB *unused,
Gimp *gimp);
#ifdef ENABLE_DEBUG_ENTRY
static void menus_debug_recurse_menu (GtkWidget *menu,
gint depth,
gchar *path);
static void menus_debug_cmd_callback (GtkWidget *widget,
gpointer data,
guint action);
static void menus_debug_recurse_menu (GtkWidget *menu,
gint depth,
gchar *path);
static void menus_debug_cmd_callback (GtkWidget *widget,
gpointer data,
guint action);
#endif /* ENABLE_DEBUG_ENTRY */
#define SEPARATOR(path) \
{ { (path), NULL, NULL, 0, "<Separator>" }, NULL, NULL, NULL }
#define BRANCH(path) \
{ { (path), NULL, NULL, 0, "<Branch>" }, NULL, NULL, NULL }
@ -280,14 +283,12 @@ static GimpItemFactoryEntry toolbox_entries[] =
{ { N_("/Help/Mem Profile"), NULL,
mem_profile_cmd_callback, 0 },
NULL,
NULL, NULL },
NULL, NULL, NULL }
#ifdef ENABLE_DEBUG_ENTRY
{ { "/Help/Dump Items (Debug)", NULL,
menus_debug_cmd_callback, 0 },
NULL,
NULL, NULL }
, { { "/Help/Dump Items (Debug)", NULL,
menus_debug_cmd_callback, 0 },
NULL, NULL, NULL }
#endif
};
@ -297,8 +298,7 @@ static GimpItemFactoryEntry toolbox_entries[] =
static GimpItemFactoryEntry image_entries[] =
{
{ { "/tearoff1", NULL, gimp_item_factory_tearoff_callback, 0, "<Tearoff>" },
NULL,
NULL, NULL },
NULL, NULL, NULL },
/* <Image>/File */
@ -1989,6 +1989,17 @@ menus_init (Gimp *gimp)
gimp);
menus_last_opened_update_labels (gimp->documents, NULL, gimp);
g_signal_connect (G_OBJECT (gimp_get_user_context (gimp)),
"foreground_changed",
G_CALLBACK (menus_color_changed),
gimp);
g_signal_connect (G_OBJECT (gimp_get_user_context (gimp)),
"background_changed",
G_CALLBACK (menus_color_changed),
gimp);
menus_color_changed (gimp_get_user_context (gimp), NULL, gimp);
}
void
@ -2418,6 +2429,21 @@ menus_last_opened_update_labels (GimpContainer *container,
}
}
static void
menus_color_changed (GimpContext *context,
const GimpRGB *unused,
Gimp *gimp)
{
GimpRGB fg;
GimpRGB bg;
gimp_context_get_foreground (context, &fg);
gimp_context_get_background (context, &bg);
gimp_menu_item_set_color ("<Image>/Edit/Fill with FG Color", &fg, FALSE);
gimp_menu_item_set_color ("<Image>/Edit/Fill with BG Color", &bg, FALSE);
}
#ifdef ENABLE_DEBUG_ENTRY

View File

@ -22,12 +22,20 @@
#include <gtk/gtk.h>
#include "libgimpcolor/gimpcolor.h"
#include "widgets-types.h"
#include "core/gimp.h"
#include "core/gimpcontext.h"
#include "gui/gui-types.h"
#include "gui/color-notebook.h"
#include "gimpcolorpanel.h"
#include "gimpitemfactory.h"
#include "app_procs.h"
struct _GimpColorPanel
@ -40,17 +48,20 @@ struct _GimpColorPanel
/* local function prototypes */
static void gimp_color_panel_class_init (GimpColorPanelClass *klass);
static void gimp_color_panel_init (GimpColorPanel *panel);
static void gimp_color_panel_destroy (GtkObject *object);
static void gimp_color_panel_color_changed (GimpColorButton *button);
static void gimp_color_panel_clicked (GtkButton *button);
static void gimp_color_panel_class_init (GimpColorPanelClass *klass);
static void gimp_color_panel_init (GimpColorPanel *panel);
static void gimp_color_panel_select_callback (ColorNotebook *notebook,
const GimpRGB *color,
ColorNotebookState state,
gpointer data);
static void gimp_color_panel_destroy (GtkObject *object);
static gboolean gimp_color_panel_button_press (GtkWidget *widget,
GdkEventButton *bevent);
static void gimp_color_panel_color_changed (GimpColorButton *button);
static void gimp_color_panel_clicked (GtkButton *button);
static void gimp_color_panel_select_callback (ColorNotebook *notebook,
const GimpRGB *color,
ColorNotebookState state,
gpointer data);
static GimpColorButtonClass *parent_class = NULL;
@ -88,16 +99,19 @@ static void
gimp_color_panel_class_init (GimpColorPanelClass *klass)
{
GtkObjectClass *object_class;
GtkWidgetClass *widget_class;
GtkButtonClass *button_class;
GimpColorButtonClass *color_button_class;
object_class = GTK_OBJECT_CLASS (klass);
widget_class = GTK_WIDGET_CLASS (klass);
button_class = GTK_BUTTON_CLASS (klass);
color_button_class = GIMP_COLOR_BUTTON_CLASS (klass);
parent_class = g_type_class_peek_parent (klass);
object_class->destroy = gimp_color_panel_destroy;
widget_class->button_press_event = gimp_color_panel_button_press;
button_class->clicked = gimp_color_panel_clicked;
color_button_class->color_changed = gimp_color_panel_color_changed;
}
@ -125,8 +139,39 @@ gimp_color_panel_destroy (GtkObject *object)
panel->color_notebook = NULL;
}
if (GTK_OBJECT_CLASS (parent_class)->destroy)
GTK_OBJECT_CLASS (parent_class)->destroy (object);
GTK_OBJECT_CLASS (parent_class)->destroy (object);
}
static gboolean
gimp_color_panel_button_press (GtkWidget *widget,
GdkEventButton *bevent)
{
if (bevent->button == 3)
{
GimpColorButton *color_button;
GimpRGB fg, bg, black, white;
color_button = GIMP_COLOR_BUTTON (widget);
gimp_context_get_foreground (gimp_get_user_context (the_gimp), &fg);
gimp_context_get_background (gimp_get_user_context (the_gimp), &bg);
gimp_rgba_set (&black, 0.0, 0.0, 0.0, 1.0);
gimp_rgba_set (&white, 1.0, 1.0, 1.0, 1.0);
gimp_item_factory_set_color (color_button->item_factory,
"/Foreground Color", &fg, FALSE);
gimp_item_factory_set_color (color_button->item_factory,
"/Background Color", &bg, FALSE);
gimp_item_factory_set_color (color_button->item_factory,
"/Black", &black, FALSE);
gimp_item_factory_set_color (color_button->item_factory,
"/White", &white, FALSE);
}
if (GTK_WIDGET_CLASS (parent_class)->button_press_event)
return GTK_WIDGET_CLASS (parent_class)->button_press_event (widget, bevent);
return FALSE;
}
GtkWidget *

View File

@ -34,6 +34,7 @@
#include "gimpdockable.h"
#include "gimpdockbook.h"
#include "gimpimagedock.h"
#include "gimpitemfactory.h"
/* EEK, see below */
#include "gimpcontainerview.h"
@ -449,13 +450,8 @@ gimp_dockbook_tab_button_press (GtkWidget *widget,
{
GimpDialogFactoryEntry *entry;
GimpContainerView *view;
GtkWidget *list_widget;
GtkWidget *grid_widget;
GtkWidget *size_widget;
GtkWidget *toggle_widget;
GtkWidget *auto_widget;
gboolean is_grid = FALSE;
gint preview_size = 16;
GimpPreviewSize preview_size = GIMP_PREVIEW_SIZE_NONE;
entry = g_object_get_data (G_OBJECT (dockable),
"gimp-dialog-factory-entry");
@ -473,81 +469,61 @@ gimp_dockbook_tab_button_press (GtkWidget *widget,
preview_size = view->preview_size;
}
list_widget = gtk_item_factory_get_widget (ifactory, "/View as List");
grid_widget = gtk_item_factory_get_widget (ifactory, "/View as Grid");
toggle_widget = gtk_item_factory_get_widget (ifactory,
"/Show Image Menu");
auto_widget = gtk_item_factory_get_widget (ifactory,
"/Auto Follow Active Image");
#define SET_ACTIVE(path,active) \
gimp_item_factory_set_active (ifactory, (path), (active))
/* yes, this is insane */
if (preview_size >= GIMP_PREVIEW_SIZE_GIGANTIC)
{
size_widget = gtk_item_factory_get_widget (ifactory,
"/Preview Size/Gigantic");
SET_ACTIVE ("/Preview Size/Gigantic", TRUE);
}
if (preview_size >= GIMP_PREVIEW_SIZE_ENORMOUS)
else if (preview_size >= GIMP_PREVIEW_SIZE_ENORMOUS)
{
size_widget = gtk_item_factory_get_widget (ifactory,
"/Preview Size/Enormous");
SET_ACTIVE ("/Preview Size/Enormous", TRUE);
}
else if (preview_size >= GIMP_PREVIEW_SIZE_HUGE)
{
size_widget = gtk_item_factory_get_widget (ifactory,
"/Preview Size/Huge");
SET_ACTIVE ("/Preview Size/Huge", TRUE);
}
else if (preview_size >= GIMP_PREVIEW_SIZE_EXTRA_LARGE)
{
size_widget = gtk_item_factory_get_widget (ifactory,
"/Preview Size/Extra Large");
SET_ACTIVE ("/Preview Size/Extra Large", TRUE);
}
else if (preview_size >= GIMP_PREVIEW_SIZE_LARGE)
{
size_widget = gtk_item_factory_get_widget (ifactory,
"/Preview Size/Large");
SET_ACTIVE ("/Preview Size/Large", TRUE);
}
else if (preview_size >= GIMP_PREVIEW_SIZE_MEDIUM)
{
size_widget = gtk_item_factory_get_widget (ifactory,
"/Preview Size/Medium");
SET_ACTIVE ("/Preview Size/Medium", TRUE);
}
else if (preview_size >= GIMP_PREVIEW_SIZE_SMALL)
{
size_widget = gtk_item_factory_get_widget (ifactory,
"/Preview Size/Small");
SET_ACTIVE ("/Preview Size/Small", TRUE);
}
else if (preview_size >= GIMP_PREVIEW_SIZE_EXTRA_SMALL)
{
size_widget = gtk_item_factory_get_widget (ifactory,
"/Preview Size/Extra Small");
SET_ACTIVE ("/Preview Size/Extra Small", TRUE);
}
else
{
size_widget = gtk_item_factory_get_widget (ifactory,
"/Preview Size/Tiny");
SET_ACTIVE ("/Preview Size/Tiny", TRUE);
}
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (size_widget),
TRUE);
if (is_grid)
{
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (grid_widget),
TRUE);
SET_ACTIVE ("/View as Grid", TRUE);
}
else
{
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (list_widget),
TRUE);
SET_ACTIVE ("/View as List", TRUE);
}
gtk_check_menu_item_set_active
(GTK_CHECK_MENU_ITEM (toggle_widget),
GIMP_IMAGE_DOCK (dockbook->dock)->show_image_menu);
SET_ACTIVE ("/Show Image Menu",
GIMP_IMAGE_DOCK (dockbook->dock)->show_image_menu);
SET_ACTIVE ("/Auto Follow Active Image",
GIMP_IMAGE_DOCK (dockbook->dock)->auto_follow_active);
gtk_check_menu_item_set_active
(GTK_CHECK_MENU_ITEM (auto_widget),
GIMP_IMAGE_DOCK (dockbook->dock)->auto_follow_active);
#undef SET_ACTIVE
}
/* do evil things */

File diff suppressed because it is too large Load Diff

View File

@ -16,13 +16,88 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef __MENUS_H__
#define __MENUS_H__
#ifndef __GIMP_ITEM_FACTORY_H__
#define __GIMP_ITEM_FACTORY_H__
G_BEGIN_DECLS
void menus_init (Gimp *gimp);
void menus_exit (Gimp *gimp);
void menus_restore (Gimp *gimp);
typedef struct _GimpItemFactoryEntry GimpItemFactoryEntry;
struct _GimpItemFactoryEntry
{
GtkItemFactoryEntry entry;
const gchar *quark_string;
const gchar *help_page;
const gchar *description;
};
#endif /* __MENUS_H__ */
GtkItemFactory * gimp_item_factory_new (GType container_type,
const gchar *path,
const gchar *factory_path,
guint n_entries,
GimpItemFactoryEntry *entries,
gpointer callback_data,
gboolean create_tearoff);
void gimp_item_factory_create_item (GtkItemFactory *item_factory,
GimpItemFactoryEntry *entry,
gpointer callback_data,
guint callback_type,
gboolean create_tearoff,
gboolean static_entry);
void gimp_item_factory_create_items (GtkItemFactory *item_factory,
guint n_entries,
GimpItemFactoryEntry *entries,
gpointer callback_data,
guint callback_type,
gboolean create_tearoff,
gboolean static_entries);
void gimp_item_factory_set_active (GtkItemFactory *factory,
gchar *path,
gboolean state);
void gimp_item_factory_set_color (GtkItemFactory *factory,
gchar *path,
const GimpRGB *color,
gboolean set_label);
void gimp_item_factory_set_label (GtkItemFactory *factory,
gchar *path,
const gchar *label);
void gimp_item_factory_set_sensitive (GtkItemFactory *factory,
gchar *path,
gboolean sensitive);
void gimp_item_factory_set_visible (GtkItemFactory *factory,
gchar *path,
gboolean visible);
void gimp_item_factory_tearoff_callback (GtkWidget *widget,
gpointer data,
guint action);
void gimp_menu_item_create (GimpItemFactoryEntry *entry,
gchar *domain_name,
gpointer callback_data);
void gimp_menu_item_destroy (gchar *path);
void gimp_menu_item_set_active (gchar *path,
gboolean state);
void gimp_menu_item_set_color (gchar *path,
const GimpRGB *color,
gboolean set_label);
void gimp_menu_item_set_label (gchar *path,
const gchar *label);
void gimp_menu_item_set_sensitive (gchar *path,
gboolean sensitive);
void gimp_menu_item_set_visible (gchar *path,
gboolean visible);
G_END_DECLS
#endif /* __GIMP_ITEM_FACTORY_H__ */

View File

@ -166,7 +166,7 @@ gimp_button_button_press (GtkWidget *widget,
if (GTK_WIDGET_CLASS (parent_class)->button_press_event)
return GTK_WIDGET_CLASS (parent_class)->button_press_event (widget, bevent);
return TRUE;
return FALSE;
}
static gboolean

View File

@ -43,13 +43,6 @@ enum
};
static const GtkTargetEntry targets[] = { { "application/x-color", 0 } };
static guint gimp_color_area_signals[LAST_SIGNAL] = { 0 };
static GtkWidgetClass * parent_class = NULL;
static void gimp_color_area_class_init (GimpColorAreaClass *klass);
static void gimp_color_area_init (GimpColorArea *gca);
@ -79,12 +72,20 @@ static void gimp_color_area_drag_data_get (GtkWidget *widget,
guint info,
guint time);
static const GtkTargetEntry targets[] = { { "application/x-color", 0 } };
static guint gimp_color_area_signals[LAST_SIGNAL] = { 0 };
static GtkPreviewClass * parent_class = NULL;
GType
gimp_color_area_get_type (void)
{
static GType gca_type = 0;
if (!gca_type)
if (! gca_type)
{
static const GTypeInfo gca_info =
{
@ -103,7 +104,7 @@ gimp_color_area_get_type (void)
"GimpColorArea",
&gca_info, 0);
}
return gca_type;
}
@ -127,8 +128,6 @@ gimp_color_area_class_init (GimpColorAreaClass *klass)
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
klass->color_changed = NULL;
object_class->destroy = gimp_color_area_destroy;
widget_class->realize = gimp_color_area_realize;
@ -138,6 +137,8 @@ gimp_color_area_class_init (GimpColorAreaClass *klass)
widget_class->drag_end = gimp_color_area_drag_end;
widget_class->drag_data_received = gimp_color_area_drag_data_received;
widget_class->drag_data_get = gimp_color_area_drag_data_get;
klass->color_changed = NULL;
}
static void
@ -158,8 +159,7 @@ static void
gimp_color_area_destroy (GtkObject *object)
{
GimpColorArea *gca;
g_return_if_fail (object != NULL);
g_return_if_fail (GIMP_IS_COLOR_AREA (object));
gca = GIMP_COLOR_AREA (object);
@ -226,7 +226,7 @@ gimp_color_area_new (const GimpRGB *color,
GTK_DEST_DEFAULT_DROP,
targets, 1,
GDK_ACTION_COPY);
/* do we need this ?? */
drag_mask &= (GDK_BUTTON1_MASK | GDK_BUTTON2_MASK | GDK_BUTTON3_MASK);
@ -249,9 +249,7 @@ void
gimp_color_area_set_color (GimpColorArea *gca,
const GimpRGB *color)
{
g_return_if_fail (gca != NULL);
g_return_if_fail (GIMP_IS_COLOR_AREA (gca));
g_return_if_fail (color != NULL);
if (gimp_rgba_distance (&gca->color, color) > 0.000001)
@ -269,8 +267,8 @@ void
gimp_color_area_get_color (GimpColorArea *gca,
GimpRGB *color)
{
g_return_if_fail (gca != NULL);
g_return_if_fail (GIMP_IS_COLOR_AREA (gca));
g_return_if_fail (color != NULL);
*color = gca->color;
}
@ -278,13 +276,12 @@ gimp_color_area_get_color (GimpColorArea *gca,
gboolean
gimp_color_area_has_alpha (GimpColorArea *gca)
{
g_return_val_if_fail (gca != NULL, FALSE);
g_return_val_if_fail (GIMP_IS_COLOR_AREA (gca), FALSE);
return gca->type != GIMP_COLOR_AREA_FLAT;
}
void
void
gimp_color_area_set_type (GimpColorArea *gca,
GimpColorAreaType type)
{
@ -304,10 +301,9 @@ gimp_color_area_update (GimpColorArea *gca)
g_source_remove (gca->idle_id);
}
gca->idle_id =
g_idle_add_full (G_PRIORITY_LOW,
(GSourceFunc) gimp_color_area_idle_update, gca,
NULL);
gca->idle_id = g_idle_add_full (G_PRIORITY_LOW,
(GSourceFunc) gimp_color_area_idle_update, gca,
NULL);
}
static gboolean
@ -391,7 +387,7 @@ gimp_color_area_idle_update (gpointer data)
}
frac = y - (gdouble) (x * height) / (gdouble) width;
if (((x / check_size) ^ (y / check_size)) & 1)
{
if ((gint) frac)
@ -472,13 +468,12 @@ gimp_color_area_drag_begin (GtkWidget *widget,
gimp_color_area_get_color (GIMP_COLOR_AREA (widget), &color);
color_area =
gimp_color_area_new (&color,
GIMP_COLOR_AREA (widget)->type,
0);
color_area = gimp_color_area_new (&color,
GIMP_COLOR_AREA (widget)->type,
0);
gtk_widget_set_size_request (color_area,
DRAG_PREVIEW_SIZE, DRAG_PREVIEW_SIZE);
DRAG_PREVIEW_SIZE, DRAG_PREVIEW_SIZE);
gtk_container_add (GTK_CONTAINER (frame), color_area);
gtk_widget_show (color_area);
gtk_widget_show (frame);

View File

@ -51,30 +51,29 @@ enum
};
static void gimp_color_button_class_init (GimpColorButtonClass *klass);
static void gimp_color_button_init (GimpColorButton *gcb);
static void gimp_color_button_destroy (GtkObject *object);
static void gimp_color_button_class_init (GimpColorButtonClass *klass);
static void gimp_color_button_init (GimpColorButton *gcb);
static void gimp_color_button_destroy (GtkObject *object);
static void gimp_color_button_clicked (GtkButton *button);
static void gimp_color_button_state_changed (GtkWidget *widget,
GtkStateType previous_state);
static gboolean gimp_color_button_button_press (GtkWidget *widget,
GdkEventButton *bevent);
static void gimp_color_button_state_changed (GtkWidget *widget,
GtkStateType prev_state);
static void gimp_color_button_clicked (GtkButton *button);
static void gimp_color_button_dialog_ok (GtkWidget *widget,
gpointer data);
static void gimp_color_button_dialog_cancel (GtkWidget *widget,
gpointer data);
static void gimp_color_button_dialog_ok (GtkWidget *widget,
gpointer data);
static void gimp_color_button_dialog_cancel (GtkWidget *widget,
gpointer data);
static void gimp_color_button_use_color (gpointer callback_data,
guint callback_action,
GtkWidget *widget);
static gint gimp_color_button_menu_popup (GtkWidget *widget,
GdkEvent *event,
gpointer data);
static gchar * gimp_color_button_menu_translate (const gchar *path,
gpointer func_data);
static void gimp_color_button_use_color (gpointer callback_data,
guint callback_action,
GtkWidget *widget);
static gchar * gimp_color_button_menu_translate (const gchar *path,
gpointer func_data);
static void gimp_color_button_color_changed (GtkObject *object,
gpointer data);
static void gimp_color_button_color_changed (GtkObject *object,
gpointer data);
static GtkItemFactoryEntry menu_items[] =
@ -145,13 +144,14 @@ gimp_color_button_class_init (GimpColorButtonClass *klass)
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
klass->color_changed = NULL;
object_class->destroy = gimp_color_button_destroy;
object_class->destroy = gimp_color_button_destroy;
widget_class->button_press_event = gimp_color_button_button_press;
widget_class->state_changed = gimp_color_button_state_changed;
widget_class->state_changed = gimp_color_button_state_changed;
button_class->clicked = gimp_color_button_clicked;
button_class->clicked = gimp_color_button_clicked;
klass->color_changed = NULL;
}
static void
@ -178,17 +178,14 @@ gimp_color_button_init (GimpColorButton *gcb)
NULL, NULL);
gtk_item_factory_create_items (gcb->item_factory,
G_N_ELEMENTS (menu_items), menu_items, gcb);
g_signal_connect (G_OBJECT (gcb), "button_press_event",
G_CALLBACK (gimp_color_button_menu_popup),
gcb);
}
static void
gimp_color_button_destroy (GtkObject *object)
{
GimpColorButton *gcb = GIMP_COLOR_BUTTON (object);
g_return_if_fail (gcb != NULL);
GimpColorButton *gcb;
gcb = GIMP_COLOR_BUTTON (object);
if (gcb->title)
{
@ -212,17 +209,44 @@ gimp_color_button_destroy (GtkObject *object)
GTK_OBJECT_CLASS (parent_class)->destroy (object);
}
static gboolean
gimp_color_button_button_press (GtkWidget *widget,
GdkEventButton *bevent)
{
GimpColorButton *gcb;
gint x;
gint y;
gcb = GIMP_COLOR_BUTTON (widget);
if (bevent->button == 3)
{
gdk_window_get_origin (GTK_WIDGET (widget)->window, &x, &y);
x += widget->allocation.x;
y += widget->allocation.y;
gtk_item_factory_popup (gcb->item_factory,
x + bevent->x, y + bevent->y,
bevent->button, bevent->time);
}
if (GTK_WIDGET_CLASS (parent_class)->button_press_event)
return GTK_WIDGET_CLASS (parent_class)->button_press_event (widget, bevent);
return FALSE;
}
static void
gimp_color_button_state_changed (GtkWidget *widget,
GtkStateType previous_state)
GtkStateType prev_state)
{
g_return_if_fail (GIMP_IS_COLOR_BUTTON (widget));
if (!GTK_WIDGET_IS_SENSITIVE (widget) && GIMP_COLOR_BUTTON (widget)->dialog)
if (! GTK_WIDGET_IS_SENSITIVE (widget) && GIMP_COLOR_BUTTON (widget)->dialog)
gtk_widget_hide (GIMP_COLOR_BUTTON (widget)->dialog);
if (GTK_WIDGET_CLASS (parent_class)->state_changed)
GTK_WIDGET_CLASS (parent_class)->state_changed (widget, previous_state);
GTK_WIDGET_CLASS (parent_class)->state_changed (widget, prev_state);
}
/**
@ -276,9 +300,7 @@ void
gimp_color_button_set_color (GimpColorButton *gcb,
const GimpRGB *color)
{
g_return_if_fail (gcb != NULL);
g_return_if_fail (GIMP_IS_COLOR_BUTTON (gcb));
g_return_if_fail (color != NULL);
gimp_color_area_set_color (GIMP_COLOR_AREA (gcb->color_area), color);
@ -294,9 +316,7 @@ void
gimp_color_button_get_color (GimpColorButton *gcb,
GimpRGB *color)
{
g_return_if_fail (gcb != NULL);
g_return_if_fail (color != NULL);
g_return_if_fail (GIMP_IS_COLOR_BUTTON (gcb));
g_return_if_fail (color != NULL);
gimp_color_area_get_color (GIMP_COLOR_AREA (gcb->color_area), color);
@ -312,7 +332,7 @@ gimp_color_button_get_color (GimpColorButton *gcb,
gboolean
gimp_color_button_has_alpha (GimpColorButton *gcb)
{
g_return_val_if_fail (gcb != NULL, FALSE);
g_return_val_if_fail (GIMP_IS_COLOR_BUTTON (gcb), FALSE);
return gimp_color_area_has_alpha (GIMP_COLOR_AREA (gcb->color_area));
}
@ -321,44 +341,11 @@ void
gimp_color_button_set_type (GimpColorButton *gcb,
GimpColorAreaType type)
{
g_return_if_fail (gcb != NULL);
g_return_if_fail (GIMP_IS_COLOR_BUTTON (gcb));
gimp_color_area_set_type (GIMP_COLOR_AREA (gcb->color_area), type);
}
static gint
gimp_color_button_menu_popup (GtkWidget *widget,
GdkEvent *event,
gpointer data)
{
GimpColorButton *gcb;
GdkEventButton *bevent;
gint x;
gint y;
g_return_val_if_fail (GIMP_IS_COLOR_BUTTON (data), FALSE);
gcb = GIMP_COLOR_BUTTON (data);
if (event->type != GDK_BUTTON_PRESS)
return FALSE;
bevent = (GdkEventButton *) event;
if (bevent->button != 3)
return FALSE;
gdk_window_get_origin (GTK_WIDGET (widget)->window, &x, &y);
x += widget->allocation.x;
y += widget->allocation.y;
gtk_item_factory_popup (gcb->item_factory,
x + bevent->x, y + bevent->y,
bevent->button, bevent->time);
return (TRUE);
}
static void
gimp_color_button_clicked (GtkButton *button)
{
@ -369,7 +356,7 @@ gimp_color_button_clicked (GtkButton *button)
g_return_if_fail (GIMP_IS_COLOR_BUTTON (button));
gcb = GIMP_COLOR_BUTTON (button);
gimp_color_button_get_color (gcb, &color);
dcolor[0] = color.r;

View File

@ -170,7 +170,6 @@ gimp_offset_area_set_size (GimpOffsetArea *offset_area,
gint offset_x;
gint offset_y;
g_return_if_fail (offset_area != NULL);
g_return_if_fail (GIMP_IS_OFFSET_AREA (offset_area));
g_return_if_fail (width > 0 && height > 0);
@ -225,7 +224,6 @@ gimp_offset_area_set_offsets (GimpOffsetArea *offset_area,
gint offset_x,
gint offset_y)
{
g_return_if_fail (offset_area != NULL);
g_return_if_fail (GIMP_IS_OFFSET_AREA (offset_area));
if (offset_area->offset_x != offset_x || offset_area->offset_y != offset_y)