mirror of
https://github.com/rozniak/xfce-winxp-tc.git
synced 2026-05-01 11:41:30 +00:00
Cleaning: Fixes #219, Tidy up libwintc-shelldpa
This commit is contained in:
@@ -39,6 +39,10 @@ add_library(
|
||||
src/impl-wndmgmt-xfw.h
|
||||
src/impl-x11.c
|
||||
src/impl-x11.h
|
||||
src/dll/wnck.c
|
||||
src/dll/wnck.h
|
||||
src/dll/xfw.c
|
||||
src/dll/xfw.h
|
||||
)
|
||||
|
||||
set_target_properties(
|
||||
|
||||
114
shared/shelldpa/src/dll/wnck.c
Normal file
114
shared/shelldpa/src/dll/wnck.c
Normal file
@@ -0,0 +1,114 @@
|
||||
#include <dlfcn.h>
|
||||
#include <gdk-pixbuf/gdk-pixbuf.h>
|
||||
#include <glib.h>
|
||||
|
||||
#include "wnck.h"
|
||||
#include "../api.h"
|
||||
|
||||
//
|
||||
// STATIC DATA
|
||||
//
|
||||
static gboolean s_initialized = FALSE;
|
||||
|
||||
//
|
||||
// RESOLVED FUNCS
|
||||
//
|
||||
WinTCWndMgmtWindow* (*p_wnck_screen_get_active_window) (
|
||||
WinTCWndMgmtScreen* screen
|
||||
) = NULL;
|
||||
WinTCWndMgmtScreen* (*p_wnck_screen_get_default) (void) = NULL;
|
||||
|
||||
GdkPixbuf* (*p_wnck_window_get_mini_icon) (
|
||||
WinTCWndMgmtWindow* window
|
||||
) = NULL;
|
||||
gchar* (*p_wnck_window_get_name) (
|
||||
WinTCWndMgmtWindow* window
|
||||
) = NULL;
|
||||
gboolean (*p_wnck_window_is_skip_tasklist) (
|
||||
WinTCWndMgmtWindow* window
|
||||
) = NULL;
|
||||
void (*p_wnck_window_minimize) (
|
||||
WinTCWndMgmtWindow* window
|
||||
) = NULL;
|
||||
void (*p_wnck_window_unminimize) (
|
||||
WinTCWndMgmtWindow* window,
|
||||
guint32 timestamp
|
||||
) = NULL;
|
||||
|
||||
//
|
||||
// PUBLIC FUNCTIONS
|
||||
//
|
||||
gboolean init_dll_wnck()
|
||||
{
|
||||
const gchar* dl_possible_names[] = {
|
||||
"libwnck-3.so",
|
||||
"libwnck-3.so.0",
|
||||
NULL
|
||||
};
|
||||
|
||||
void* dl_wnck = NULL;
|
||||
|
||||
if (s_initialized)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
for (int i = 0; dl_possible_names[i] != NULL; i++)
|
||||
{
|
||||
dl_wnck = dlopen(dl_possible_names[i], RTLD_LAZY | RTLD_LOCAL);
|
||||
|
||||
if (dl_wnck != NULL)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (dl_wnck == NULL)
|
||||
{
|
||||
g_message("%s", "libwnck not available.");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// Attempt to load the necessary functions
|
||||
//
|
||||
p_wnck_screen_get_active_window =
|
||||
dlsym(dl_wnck, "wnck_screen_get_active_window");
|
||||
|
||||
p_wnck_screen_get_default =
|
||||
dlsym(dl_wnck, "wnck_screen_get_default");
|
||||
|
||||
p_wnck_window_get_mini_icon =
|
||||
dlsym(dl_wnck, "wnck_window_get_mini_icon");
|
||||
|
||||
p_wnck_window_get_name =
|
||||
dlsym(dl_wnck, "wnck_window_get_name");
|
||||
|
||||
p_wnck_window_is_skip_tasklist =
|
||||
dlsym(dl_wnck, "wnck_window_is_skip_tasklist");
|
||||
|
||||
p_wnck_window_minimize =
|
||||
dlsym(dl_wnck, "wnck_window_minimize");
|
||||
|
||||
p_wnck_window_unminimize =
|
||||
dlsym(dl_wnck, "wnck_window_unminimize");
|
||||
|
||||
// Check all symbols loaded
|
||||
//
|
||||
if (
|
||||
p_wnck_screen_get_active_window == NULL ||
|
||||
p_wnck_screen_get_default == NULL ||
|
||||
p_wnck_window_get_mini_icon == NULL ||
|
||||
p_wnck_window_get_name == NULL ||
|
||||
p_wnck_window_is_skip_tasklist == NULL ||
|
||||
p_wnck_window_minimize == NULL ||
|
||||
p_wnck_window_unminimize == NULL
|
||||
)
|
||||
{
|
||||
g_warning("%s", "libwnck loaded, but not all symbols.");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
s_initialized = TRUE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
39
shared/shelldpa/src/dll/wnck.h
Normal file
39
shared/shelldpa/src/dll/wnck.h
Normal file
@@ -0,0 +1,39 @@
|
||||
#ifndef __DLL_WNCK_H__
|
||||
#define __DLL_WNCK_H__
|
||||
|
||||
#include <gdk-pixbuf/gdk-pixbuf.h>
|
||||
#include <glib.h>
|
||||
|
||||
#include "../api.h"
|
||||
|
||||
//
|
||||
// RESOLVED FUNCS
|
||||
//
|
||||
extern WinTCWndMgmtWindow* (*p_wnck_screen_get_active_window) (
|
||||
WinTCWndMgmtScreen* screen
|
||||
);
|
||||
extern WinTCWndMgmtScreen* (*p_wnck_screen_get_default) (void);
|
||||
|
||||
extern GdkPixbuf* (*p_wnck_window_get_mini_icon) (
|
||||
WinTCWndMgmtWindow* window
|
||||
);
|
||||
extern gchar* (*p_wnck_window_get_name) (
|
||||
WinTCWndMgmtWindow* window
|
||||
);
|
||||
extern gboolean (*p_wnck_window_is_skip_tasklist) (
|
||||
WinTCWndMgmtWindow* window
|
||||
);
|
||||
extern void (*p_wnck_window_minimize) (
|
||||
WinTCWndMgmtWindow* window
|
||||
);
|
||||
extern void (*p_wnck_window_unminimize) (
|
||||
WinTCWndMgmtWindow* window,
|
||||
guint32 timestamp
|
||||
);
|
||||
|
||||
//
|
||||
// PUBLIC FUNCTIONS
|
||||
//
|
||||
gboolean init_dll_wnck(void);
|
||||
|
||||
#endif
|
||||
96
shared/shelldpa/src/dll/xfw.c
Normal file
96
shared/shelldpa/src/dll/xfw.c
Normal file
@@ -0,0 +1,96 @@
|
||||
#include <dlfcn.h>
|
||||
#include <gdk-pixbuf/gdk-pixbuf.h>
|
||||
#include <glib.h>
|
||||
|
||||
#include "xfw.h"
|
||||
#include "../api.h"
|
||||
|
||||
//
|
||||
// STATIC DATA
|
||||
//
|
||||
static gboolean s_initialized = FALSE;
|
||||
|
||||
//
|
||||
// RESOLVED FUNCS
|
||||
//
|
||||
WinTCWndMgmtWindow* (*p_xfw_screen_get_active_window) (
|
||||
WinTCWndMgmtScreen* screen
|
||||
) = NULL;
|
||||
WinTCWndMgmtScreen* (*p_xfw_screen_get_default) (void) = NULL;
|
||||
|
||||
GdkPixbuf* (*p_xfw_window_get_icon) (
|
||||
WinTCWndMgmtWindow* window,
|
||||
gint size,
|
||||
gint scale
|
||||
) = NULL;
|
||||
gchar* (*p_xfw_window_get_name) (
|
||||
WinTCWndMgmtWindow* window
|
||||
) = NULL;
|
||||
gboolean (*p_xfw_window_is_skip_tasklist) (
|
||||
WinTCWndMgmtWindow* window
|
||||
) = NULL;
|
||||
void (*p_xfw_window_set_minimized) (
|
||||
WinTCWndMgmtWindow* window,
|
||||
gboolean is_minimized,
|
||||
GError** error
|
||||
) = NULL;
|
||||
|
||||
//
|
||||
// PUBLIC FUNCTIONS
|
||||
//
|
||||
gboolean init_dll_xfw()
|
||||
{
|
||||
void* dl_xfw = NULL;
|
||||
|
||||
if (s_initialized)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
dl_xfw = dlopen("libxfce4windowing-0.so", RTLD_LAZY | RTLD_LOCAL);
|
||||
|
||||
if (dl_xfw == NULL)
|
||||
{
|
||||
g_message("%s", "libxfce4windowing not available.");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// Attempt to load the necessary functions
|
||||
//
|
||||
p_xfw_screen_get_active_window =
|
||||
dlsym(dl_xfw, "xfw_screen_get_active_window");
|
||||
|
||||
p_xfw_screen_get_default =
|
||||
dlsym(dl_xfw, "xfw_screen_get_default");
|
||||
|
||||
p_xfw_window_get_icon =
|
||||
dlsym(dl_xfw, "xfw_window_get_icon");
|
||||
|
||||
p_xfw_window_get_name =
|
||||
dlsym(dl_xfw, "xfw_window_get_name");
|
||||
|
||||
p_xfw_window_is_skip_tasklist =
|
||||
dlsym(dl_xfw, "xfw_window_is_skip_tasklist");
|
||||
|
||||
p_xfw_window_set_minimized =
|
||||
dlsym(dl_xfw, "xfw_window_set_minimized");
|
||||
|
||||
// Check all symbols loaded
|
||||
//
|
||||
if (
|
||||
p_xfw_screen_get_active_window == NULL ||
|
||||
p_xfw_screen_get_default == NULL ||
|
||||
p_xfw_window_get_icon == NULL ||
|
||||
p_xfw_window_get_name == NULL ||
|
||||
p_xfw_window_is_skip_tasklist == NULL ||
|
||||
p_xfw_window_set_minimized == NULL
|
||||
)
|
||||
{
|
||||
g_warning("%s", "libxfce4windowing loaded, but not all symbols");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
s_initialized = TRUE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
39
shared/shelldpa/src/dll/xfw.h
Normal file
39
shared/shelldpa/src/dll/xfw.h
Normal file
@@ -0,0 +1,39 @@
|
||||
#ifndef __DLL_XFW_H__
|
||||
#define __DLL_XFW_H__
|
||||
|
||||
#include <gdk-pixbuf/gdk-pixbuf.h>
|
||||
#include <glib.h>
|
||||
|
||||
#include "../api.h"
|
||||
|
||||
//
|
||||
// RESOLVED FUNCS
|
||||
//
|
||||
extern WinTCWndMgmtWindow* (*p_xfw_screen_get_active_window) (
|
||||
WinTCWndMgmtScreen* screen
|
||||
);
|
||||
extern WinTCWndMgmtScreen* (*p_xfw_screen_get_default) (void);
|
||||
|
||||
extern GdkPixbuf* (*p_xfw_window_get_icon) (
|
||||
WinTCWndMgmtWindow* window,
|
||||
gint size,
|
||||
gint scale
|
||||
);
|
||||
extern gchar* (*p_xfw_window_get_name) (
|
||||
WinTCWndMgmtWindow* window
|
||||
);
|
||||
extern gboolean (*p_xfw_window_is_skip_tasklist) (
|
||||
WinTCWndMgmtWindow* window
|
||||
);
|
||||
extern void (*p_xfw_window_set_minimized) (
|
||||
WinTCWndMgmtWindow* window,
|
||||
gboolean is_minimized,
|
||||
GError** error
|
||||
);
|
||||
|
||||
//
|
||||
// PUBLIC FUNCTIONS
|
||||
//
|
||||
gboolean init_dll_xfw(void);
|
||||
|
||||
#endif
|
||||
@@ -4,31 +4,7 @@
|
||||
|
||||
#include "api.h"
|
||||
#include "impl-wndmgmt-wnck.h"
|
||||
|
||||
//
|
||||
// RESOLVED FUNCS
|
||||
//
|
||||
static WinTCWndMgmtWindow* (*p_wnck_screen_get_active_window) (
|
||||
WinTCWndMgmtScreen* screen
|
||||
) = NULL;
|
||||
static WinTCWndMgmtScreen* (*p_wnck_screen_get_default) (void) = NULL;
|
||||
|
||||
static GdkPixbuf* (*p_wnck_window_get_mini_icon) (
|
||||
WinTCWndMgmtWindow* window
|
||||
) = NULL;
|
||||
static gchar* (*p_wnck_window_get_name) (
|
||||
WinTCWndMgmtWindow* window
|
||||
) = NULL;
|
||||
static gboolean (*p_wnck_window_is_skip_tasklist) (
|
||||
WinTCWndMgmtWindow* window
|
||||
) = NULL;
|
||||
static void (*p_wnck_window_minimize) (
|
||||
WinTCWndMgmtWindow* window
|
||||
) = NULL;
|
||||
static void (*p_wnck_window_unminimize) (
|
||||
WinTCWndMgmtWindow* window,
|
||||
guint32 timestamp
|
||||
) = NULL;
|
||||
#include "dll/wnck.h"
|
||||
|
||||
//
|
||||
// FORWARD DECLARATIONS
|
||||
@@ -42,66 +18,9 @@ static void wnck_window_unminimize_now(
|
||||
//
|
||||
gboolean init_wndmgmt_wnck_impl(void)
|
||||
{
|
||||
const gchar* dl_possible_names[] = {
|
||||
"libwnck-3.so",
|
||||
"libwnck-3.so.0",
|
||||
NULL
|
||||
};
|
||||
|
||||
void* dl_wnck = NULL;
|
||||
|
||||
for (int i = 0; dl_possible_names[i] != NULL; i++)
|
||||
if (!init_dll_wnck())
|
||||
{
|
||||
dl_wnck = dlopen(dl_possible_names[i], RTLD_LAZY | RTLD_LOCAL);
|
||||
|
||||
if (dl_wnck != NULL)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (dl_wnck == NULL)
|
||||
{
|
||||
g_message("%s", "libwnck not available.");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// Attempt to load the necessary functions
|
||||
//
|
||||
p_wnck_screen_get_active_window =
|
||||
dlsym(dl_wnck, "wnck_screen_get_active_window");
|
||||
|
||||
p_wnck_screen_get_default =
|
||||
dlsym(dl_wnck, "wnck_screen_get_default");
|
||||
|
||||
p_wnck_window_get_mini_icon =
|
||||
dlsym(dl_wnck, "wnck_window_get_mini_icon");
|
||||
|
||||
p_wnck_window_get_name =
|
||||
dlsym(dl_wnck, "wnck_window_get_name");
|
||||
|
||||
p_wnck_window_is_skip_tasklist =
|
||||
dlsym(dl_wnck, "wnck_window_is_skip_tasklist");
|
||||
|
||||
p_wnck_window_minimize =
|
||||
dlsym(dl_wnck, "wnck_window_minimize");
|
||||
|
||||
p_wnck_window_unminimize =
|
||||
dlsym(dl_wnck, "wnck_window_unminimize");
|
||||
|
||||
// Check all symbols loaded
|
||||
//
|
||||
if (
|
||||
p_wnck_screen_get_active_window == NULL ||
|
||||
p_wnck_screen_get_default == NULL ||
|
||||
p_wnck_window_get_mini_icon == NULL ||
|
||||
p_wnck_window_get_name == NULL ||
|
||||
p_wnck_window_is_skip_tasklist == NULL ||
|
||||
p_wnck_window_minimize == NULL ||
|
||||
p_wnck_window_unminimize == NULL
|
||||
)
|
||||
{
|
||||
g_warning("%s", "libwnck loaded, but not all symbols.");
|
||||
g_warning("%s", "libwnck not available.");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,31 +4,7 @@
|
||||
|
||||
#include "api.h"
|
||||
#include "impl-wndmgmt-xfw.h"
|
||||
|
||||
//
|
||||
// RESOLVED FUNCS
|
||||
//
|
||||
static WinTCWndMgmtWindow* (*p_xfw_screen_get_active_window) (
|
||||
WinTCWndMgmtScreen* screen
|
||||
) = NULL;
|
||||
static WinTCWndMgmtScreen* (*p_xfw_screen_get_default) (void) = NULL;
|
||||
|
||||
static GdkPixbuf* (*p_xfw_window_get_icon) (
|
||||
WinTCWndMgmtWindow* window,
|
||||
gint size,
|
||||
gint scale
|
||||
) = NULL;
|
||||
static gchar* (*p_xfw_window_get_name) (
|
||||
WinTCWndMgmtWindow* window
|
||||
) = NULL;
|
||||
static gboolean (*p_xfw_window_is_skip_tasklist) (
|
||||
WinTCWndMgmtWindow* window
|
||||
) = NULL;
|
||||
static gboolean (*p_xfw_window_set_minimized) (
|
||||
WinTCWndMgmtWindow* window,
|
||||
gboolean is_maximized,
|
||||
GError** error
|
||||
) = NULL;
|
||||
#include "dll/xfw.h"
|
||||
|
||||
//
|
||||
// FORWARD DECLARATIONS
|
||||
@@ -48,46 +24,9 @@ static void xfw_window_unminimize(
|
||||
//
|
||||
gboolean init_wndmgmt_xfw_impl(void)
|
||||
{
|
||||
void* dl_xfw = dlopen("libxfce4windowing-0.so", RTLD_LAZY | RTLD_LOCAL);
|
||||
|
||||
if (dl_xfw == NULL)
|
||||
if (!init_dll_xfw())
|
||||
{
|
||||
g_message("%s", "libxfce4windowing not available.");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// Attempt to load the necessary functions
|
||||
//
|
||||
p_xfw_screen_get_active_window =
|
||||
dlsym(dl_xfw, "xfw_screen_get_active_window");
|
||||
|
||||
p_xfw_screen_get_default =
|
||||
dlsym(dl_xfw, "xfw_screen_get_default");
|
||||
|
||||
p_xfw_window_get_icon =
|
||||
dlsym(dl_xfw, "xfw_window_get_icon");
|
||||
|
||||
p_xfw_window_get_name =
|
||||
dlsym(dl_xfw, "xfw_window_get_name");
|
||||
|
||||
p_xfw_window_is_skip_tasklist =
|
||||
dlsym(dl_xfw, "xfw_window_is_skip_tasklist");
|
||||
|
||||
p_xfw_window_set_minimized =
|
||||
dlsym(dl_xfw, "xfw_window_set_minimized");
|
||||
|
||||
// Check all symbols loaded
|
||||
//
|
||||
if (
|
||||
p_xfw_screen_get_active_window == NULL ||
|
||||
p_xfw_screen_get_default == NULL ||
|
||||
p_xfw_window_get_icon == NULL ||
|
||||
p_xfw_window_get_name == NULL ||
|
||||
p_xfw_window_is_skip_tasklist == NULL ||
|
||||
p_xfw_window_set_minimized == NULL
|
||||
)
|
||||
{
|
||||
g_warning("%s", "libxfce4windowing loaded, but not all symbols.");
|
||||
g_warning("%s", "libxfce4windowing not available.");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user