2002-05-15 00:57:00 +00:00
|
|
|
#include "gnome-window-manager.h"
|
|
|
|
|
|
|
|
#include <gmodule.h>
|
|
|
|
|
Update to deal with the .pc file that gets generated.
2002-06-02 Seth Nickell <snickell@stanford.edu>
* .cvsignore:
Update to deal with the .pc file that gets generated.
* Makefile.am:
Build a real library, not just a non-installed. This is to get around
problems dealing with GObject inheritance and static memory problems. We
have a run time loaded object deriving from the library, so it has to link it in. But then
the problem that occurs is that both the run-time loaded library and the
program that calls it statically link the .la in. Then they have different
memory spaces, and type registration goes to pot. Open to suggestions if there's
a way of doing this without making an installed library.
* gnome-window-manager.c: (gnome_window_manager_new),
(gnome_window_manager_get_name), (gnome_window_manager_set_theme),
(gnome_window_manager_get_theme_list),
(gnome_window_manager_set_font),
(gnome_window_manager_get_focus_follows_mouse),
(gnome_window_manager_set_focus_follows_mouse),
(gnome_window_manager_init), (gnome_window_manager_finalize),
(gnome_window_manager_class_init), (gnome_window_manager_get_type):
* gnome-window-manager.h:
Lots of formatting fixes, change some of the boilerplate.
* gnome-window-settings-2.0.pc.in:
Since we're installing a library, go the whole way. Its good to make this
easy to depend on for external window managers anyway, now that I think
of it.
* gnome-wm-manager.c: (gnome_wm_manager_init),
(gnome_wm_manager_get_list), (gnome_wm_manager_set_current),
(gnome_wm_manager_get_current),
(gnome_wm_manager_change_wm_to_settings), (restart_label_update),
(restart_dialog_raise), (restart_dialog_destroyed),
(show_restart_dialog), (hide_restart_dialog), (init_session),
(update_session), (init_callback), (restart_finalize),
(restart_failure), (show_restart_info), (restart_finish),
(restart_callback), (restart), (revert_callback),
(cancel_callback):
* gnome-wm-manager.h:
Add code for doing the window manager switch to the library,
snitched out of wm-properties. Its probably a little broken right now.
* wm-exec.c: (wm_is_running), (find_gnome_wm_window),
(find_wm_window_from_client), (window_has_wm_state),
(descendent_has_wm_state), (find_wm_window_from_hunt),
(find_wm_window), (start_timeout), (start_do), (kill_timeout),
(wm_restart), (wm_guess_current):
* wm-list.c: (is_blank), (wm_compare), (wm_free),
(wm_check_present), (wm_copy), (wm_list_find), (wm_list_find_exec),
(wm_list_find_files), (wm_list_read_dir), (wm_list_init),
(wm_list_save), (wm_list_revert), (wm_list_add), (wm_list_delete),
(wm_list_set_current), (wm_list_get_current), (wm_list_get_revert),
(wm_read_from_xml), (wm_list_read_from_xml), (wm_write_to_xml),
(wm_list_write_to_xml), (xml_read_bool), (xml_write_bool):
* wm-properties.h:
Take wm-switching code out of the capplet, move it here.
(Jacob, I did a make dist and build the resulting tarball, hope things
don't break for you this time ... )
2002-06-03 00:33:59 +00:00
|
|
|
static GObjectClass *parent_class;
|
|
|
|
|
|
|
|
struct _GnomeWindowManagerPrivate {
|
|
|
|
char *window_manager_name;
|
|
|
|
GnomeDesktopItem *ditem;
|
|
|
|
};
|
|
|
|
|
2002-05-15 00:57:00 +00:00
|
|
|
GObject *
|
|
|
|
gnome_window_manager_new (GnomeDesktopItem *item)
|
|
|
|
{
|
|
|
|
const char *settings_lib;
|
|
|
|
char *module_name;
|
|
|
|
GnomeWindowManagerNewFunc wm_new_func = NULL;
|
|
|
|
GObject *wm;
|
|
|
|
GModule *module;
|
|
|
|
gboolean success;
|
|
|
|
|
|
|
|
settings_lib = gnome_desktop_item_get_string (item, "GnomeSettingsLibrary");
|
|
|
|
|
|
|
|
module_name = g_module_build_path (GNOME_WINDOW_MANAGER_MODULE_PATH,
|
|
|
|
settings_lib);
|
|
|
|
|
|
|
|
module = g_module_open (module_name, G_MODULE_BIND_LAZY);
|
|
|
|
if (module == NULL) {
|
|
|
|
g_warning ("Couldn't load window manager settings module `%s' (%s)", module_name, g_module_error ());
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2002-06-05 00:40:01 +00:00
|
|
|
success = g_module_symbol (module, "window_manager_new",
|
2002-05-15 00:57:00 +00:00
|
|
|
(gpointer *) &wm_new_func);
|
|
|
|
|
|
|
|
if ((!success) || wm_new_func == NULL) {
|
|
|
|
g_warning ("Couldn't load window manager settings module `%s`, couldn't find symbol \'window_manager_new\'", module_name);
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2002-06-05 00:40:01 +00:00
|
|
|
wm = (wm_new_func) ();
|
Update to deal with the .pc file that gets generated.
2002-06-02 Seth Nickell <snickell@stanford.edu>
* .cvsignore:
Update to deal with the .pc file that gets generated.
* Makefile.am:
Build a real library, not just a non-installed. This is to get around
problems dealing with GObject inheritance and static memory problems. We
have a run time loaded object deriving from the library, so it has to link it in. But then
the problem that occurs is that both the run-time loaded library and the
program that calls it statically link the .la in. Then they have different
memory spaces, and type registration goes to pot. Open to suggestions if there's
a way of doing this without making an installed library.
* gnome-window-manager.c: (gnome_window_manager_new),
(gnome_window_manager_get_name), (gnome_window_manager_set_theme),
(gnome_window_manager_get_theme_list),
(gnome_window_manager_set_font),
(gnome_window_manager_get_focus_follows_mouse),
(gnome_window_manager_set_focus_follows_mouse),
(gnome_window_manager_init), (gnome_window_manager_finalize),
(gnome_window_manager_class_init), (gnome_window_manager_get_type):
* gnome-window-manager.h:
Lots of formatting fixes, change some of the boilerplate.
* gnome-window-settings-2.0.pc.in:
Since we're installing a library, go the whole way. Its good to make this
easy to depend on for external window managers anyway, now that I think
of it.
* gnome-wm-manager.c: (gnome_wm_manager_init),
(gnome_wm_manager_get_list), (gnome_wm_manager_set_current),
(gnome_wm_manager_get_current),
(gnome_wm_manager_change_wm_to_settings), (restart_label_update),
(restart_dialog_raise), (restart_dialog_destroyed),
(show_restart_dialog), (hide_restart_dialog), (init_session),
(update_session), (init_callback), (restart_finalize),
(restart_failure), (show_restart_info), (restart_finish),
(restart_callback), (restart), (revert_callback),
(cancel_callback):
* gnome-wm-manager.h:
Add code for doing the window manager switch to the library,
snitched out of wm-properties. Its probably a little broken right now.
* wm-exec.c: (wm_is_running), (find_gnome_wm_window),
(find_wm_window_from_client), (window_has_wm_state),
(descendent_has_wm_state), (find_wm_window_from_hunt),
(find_wm_window), (start_timeout), (start_do), (kill_timeout),
(wm_restart), (wm_guess_current):
* wm-list.c: (is_blank), (wm_compare), (wm_free),
(wm_check_present), (wm_copy), (wm_list_find), (wm_list_find_exec),
(wm_list_find_files), (wm_list_read_dir), (wm_list_init),
(wm_list_save), (wm_list_revert), (wm_list_add), (wm_list_delete),
(wm_list_set_current), (wm_list_get_current), (wm_list_get_revert),
(wm_read_from_xml), (wm_list_read_from_xml), (wm_write_to_xml),
(wm_list_write_to_xml), (xml_read_bool), (xml_write_bool):
* wm-properties.h:
Take wm-switching code out of the capplet, move it here.
(Jacob, I did a make dist and build the resulting tarball, hope things
don't break for you this time ... )
2002-06-03 00:33:59 +00:00
|
|
|
|
|
|
|
(GNOME_WINDOW_MANAGER (wm))->p->window_manager_name = g_strdup (gnome_desktop_item_get_string (item, GNOME_DESKTOP_ITEM_NAME));
|
|
|
|
(GNOME_WINDOW_MANAGER (wm))->p->ditem = gnome_desktop_item_ref (item);
|
2002-05-15 00:57:00 +00:00
|
|
|
|
|
|
|
return (wm);
|
|
|
|
}
|
Update to deal with the .pc file that gets generated.
2002-06-02 Seth Nickell <snickell@stanford.edu>
* .cvsignore:
Update to deal with the .pc file that gets generated.
* Makefile.am:
Build a real library, not just a non-installed. This is to get around
problems dealing with GObject inheritance and static memory problems. We
have a run time loaded object deriving from the library, so it has to link it in. But then
the problem that occurs is that both the run-time loaded library and the
program that calls it statically link the .la in. Then they have different
memory spaces, and type registration goes to pot. Open to suggestions if there's
a way of doing this without making an installed library.
* gnome-window-manager.c: (gnome_window_manager_new),
(gnome_window_manager_get_name), (gnome_window_manager_set_theme),
(gnome_window_manager_get_theme_list),
(gnome_window_manager_set_font),
(gnome_window_manager_get_focus_follows_mouse),
(gnome_window_manager_set_focus_follows_mouse),
(gnome_window_manager_init), (gnome_window_manager_finalize),
(gnome_window_manager_class_init), (gnome_window_manager_get_type):
* gnome-window-manager.h:
Lots of formatting fixes, change some of the boilerplate.
* gnome-window-settings-2.0.pc.in:
Since we're installing a library, go the whole way. Its good to make this
easy to depend on for external window managers anyway, now that I think
of it.
* gnome-wm-manager.c: (gnome_wm_manager_init),
(gnome_wm_manager_get_list), (gnome_wm_manager_set_current),
(gnome_wm_manager_get_current),
(gnome_wm_manager_change_wm_to_settings), (restart_label_update),
(restart_dialog_raise), (restart_dialog_destroyed),
(show_restart_dialog), (hide_restart_dialog), (init_session),
(update_session), (init_callback), (restart_finalize),
(restart_failure), (show_restart_info), (restart_finish),
(restart_callback), (restart), (revert_callback),
(cancel_callback):
* gnome-wm-manager.h:
Add code for doing the window manager switch to the library,
snitched out of wm-properties. Its probably a little broken right now.
* wm-exec.c: (wm_is_running), (find_gnome_wm_window),
(find_wm_window_from_client), (window_has_wm_state),
(descendent_has_wm_state), (find_wm_window_from_hunt),
(find_wm_window), (start_timeout), (start_do), (kill_timeout),
(wm_restart), (wm_guess_current):
* wm-list.c: (is_blank), (wm_compare), (wm_free),
(wm_check_present), (wm_copy), (wm_list_find), (wm_list_find_exec),
(wm_list_find_files), (wm_list_read_dir), (wm_list_init),
(wm_list_save), (wm_list_revert), (wm_list_add), (wm_list_delete),
(wm_list_set_current), (wm_list_get_current), (wm_list_get_revert),
(wm_read_from_xml), (wm_list_read_from_xml), (wm_write_to_xml),
(wm_list_write_to_xml), (xml_read_bool), (xml_write_bool):
* wm-properties.h:
Take wm-switching code out of the capplet, move it here.
(Jacob, I did a make dist and build the resulting tarball, hope things
don't break for you this time ... )
2002-06-03 00:33:59 +00:00
|
|
|
|
|
|
|
const char *
|
|
|
|
gnome_window_manager_get_name (GnomeWindowManager *wm)
|
|
|
|
{
|
|
|
|
return wm->p->window_manager_name;
|
|
|
|
}
|
2002-06-04 23:00:19 +00:00
|
|
|
|
|
|
|
GnomeDesktopItem *
|
|
|
|
gnome_window_manager_get_ditem (GnomeWindowManager *wm)
|
|
|
|
{
|
|
|
|
return gnome_desktop_item_ref (wm->p->ditem);
|
|
|
|
}
|
|
|
|
|
Update to deal with the .pc file that gets generated.
2002-06-02 Seth Nickell <snickell@stanford.edu>
* .cvsignore:
Update to deal with the .pc file that gets generated.
* Makefile.am:
Build a real library, not just a non-installed. This is to get around
problems dealing with GObject inheritance and static memory problems. We
have a run time loaded object deriving from the library, so it has to link it in. But then
the problem that occurs is that both the run-time loaded library and the
program that calls it statically link the .la in. Then they have different
memory spaces, and type registration goes to pot. Open to suggestions if there's
a way of doing this without making an installed library.
* gnome-window-manager.c: (gnome_window_manager_new),
(gnome_window_manager_get_name), (gnome_window_manager_set_theme),
(gnome_window_manager_get_theme_list),
(gnome_window_manager_set_font),
(gnome_window_manager_get_focus_follows_mouse),
(gnome_window_manager_set_focus_follows_mouse),
(gnome_window_manager_init), (gnome_window_manager_finalize),
(gnome_window_manager_class_init), (gnome_window_manager_get_type):
* gnome-window-manager.h:
Lots of formatting fixes, change some of the boilerplate.
* gnome-window-settings-2.0.pc.in:
Since we're installing a library, go the whole way. Its good to make this
easy to depend on for external window managers anyway, now that I think
of it.
* gnome-wm-manager.c: (gnome_wm_manager_init),
(gnome_wm_manager_get_list), (gnome_wm_manager_set_current),
(gnome_wm_manager_get_current),
(gnome_wm_manager_change_wm_to_settings), (restart_label_update),
(restart_dialog_raise), (restart_dialog_destroyed),
(show_restart_dialog), (hide_restart_dialog), (init_session),
(update_session), (init_callback), (restart_finalize),
(restart_failure), (show_restart_info), (restart_finish),
(restart_callback), (restart), (revert_callback),
(cancel_callback):
* gnome-wm-manager.h:
Add code for doing the window manager switch to the library,
snitched out of wm-properties. Its probably a little broken right now.
* wm-exec.c: (wm_is_running), (find_gnome_wm_window),
(find_wm_window_from_client), (window_has_wm_state),
(descendent_has_wm_state), (find_wm_window_from_hunt),
(find_wm_window), (start_timeout), (start_do), (kill_timeout),
(wm_restart), (wm_guess_current):
* wm-list.c: (is_blank), (wm_compare), (wm_free),
(wm_check_present), (wm_copy), (wm_list_find), (wm_list_find_exec),
(wm_list_find_files), (wm_list_read_dir), (wm_list_init),
(wm_list_save), (wm_list_revert), (wm_list_add), (wm_list_delete),
(wm_list_set_current), (wm_list_get_current), (wm_list_get_revert),
(wm_read_from_xml), (wm_list_read_from_xml), (wm_write_to_xml),
(wm_list_write_to_xml), (xml_read_bool), (xml_write_bool):
* wm-properties.h:
Take wm-switching code out of the capplet, move it here.
(Jacob, I did a make dist and build the resulting tarball, hope things
don't break for you this time ... )
2002-06-03 00:33:59 +00:00
|
|
|
void
|
|
|
|
gnome_window_manager_set_theme (GnomeWindowManager *wm, const char *theme_name)
|
|
|
|
{
|
|
|
|
GnomeWindowManagerClass *klass = GNOME_WINDOW_MANAGER_GET_CLASS (wm);
|
|
|
|
klass->set_theme (theme_name);
|
|
|
|
}
|
|
|
|
|
|
|
|
GList *
|
|
|
|
gnome_window_manager_get_theme_list (GnomeWindowManager *wm)
|
|
|
|
{
|
|
|
|
GnomeWindowManagerClass *klass = GNOME_WINDOW_MANAGER_GET_CLASS (wm);
|
|
|
|
return klass->get_theme_list ();
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
gnome_window_manager_set_font (GnomeWindowManager *wm, const char *font)
|
|
|
|
{
|
|
|
|
GnomeWindowManagerClass *klass = GNOME_WINDOW_MANAGER_GET_CLASS (wm);
|
|
|
|
klass->set_font (font);
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
gnome_window_manager_set_focus_follows_mouse (GnomeWindowManager *wm, gboolean focus_follows_mouse)
|
|
|
|
{
|
|
|
|
GnomeWindowManagerClass *klass = GNOME_WINDOW_MANAGER_GET_CLASS (wm);
|
|
|
|
klass->set_focus_follows_mouse (focus_follows_mouse);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
gnome_window_manager_init (GnomeWindowManager *gnome_window_manager, GnomeWindowManagerClass *class)
|
|
|
|
{
|
|
|
|
gnome_window_manager->p = g_new0 (GnomeWindowManagerPrivate, 1);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
gnome_window_manager_finalize (GObject *object)
|
|
|
|
{
|
|
|
|
GnomeWindowManager *gnome_window_manager;
|
|
|
|
|
|
|
|
g_return_if_fail (object != NULL);
|
|
|
|
g_return_if_fail (IS_GNOME_WINDOW_MANAGER (object));
|
|
|
|
|
|
|
|
gnome_window_manager = GNOME_WINDOW_MANAGER (object);
|
|
|
|
|
|
|
|
g_free (gnome_window_manager->p);
|
|
|
|
|
|
|
|
parent_class->finalize (object);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
gnome_window_manager_class_init (GnomeWindowManagerClass *class)
|
|
|
|
{
|
|
|
|
GObjectClass *object_class;
|
|
|
|
GnomeWindowManagerClass *wm_class;
|
|
|
|
|
|
|
|
object_class = G_OBJECT_CLASS (class);
|
|
|
|
wm_class = GNOME_WINDOW_MANAGER_CLASS (class);
|
|
|
|
|
|
|
|
object_class->finalize = gnome_window_manager_finalize;
|
|
|
|
|
|
|
|
wm_class->set_theme = NULL;
|
|
|
|
wm_class->get_theme_list = NULL;
|
|
|
|
wm_class->set_font = NULL;
|
|
|
|
wm_class->set_focus_follows_mouse = NULL;
|
|
|
|
|
|
|
|
parent_class = g_type_class_peek_parent (class);
|
|
|
|
}
|
|
|
|
|
|
|
|
GType
|
|
|
|
gnome_window_manager_get_type (void)
|
|
|
|
{
|
|
|
|
static GType gnome_window_manager_type = 0;
|
|
|
|
|
|
|
|
if (!gnome_window_manager_type) {
|
|
|
|
static GTypeInfo gnome_window_manager_info = {
|
|
|
|
sizeof (GnomeWindowManagerClass),
|
|
|
|
NULL, /* GBaseInitFunc */
|
|
|
|
NULL, /* GBaseFinalizeFunc */
|
|
|
|
(GClassInitFunc) gnome_window_manager_class_init,
|
|
|
|
NULL, /* GClassFinalizeFunc */
|
|
|
|
NULL, /* user-supplied data */
|
|
|
|
sizeof (GnomeWindowManager),
|
|
|
|
0, /* n_preallocs */
|
|
|
|
(GInstanceInitFunc) gnome_window_manager_init,
|
|
|
|
NULL
|
|
|
|
};
|
|
|
|
|
|
|
|
gnome_window_manager_type =
|
|
|
|
g_type_register_static (G_TYPE_OBJECT,
|
|
|
|
"GWindowManager",
|
|
|
|
&gnome_window_manager_info, 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
return gnome_window_manager_type;
|
|
|
|
}
|
|
|
|
|
|
|
|
|