mirror of
https://github.com/rozniak/xfce-winxp-tc.git
synced 2026-05-01 03:31:33 +00:00
Enhancement: Refactor Start menu, removes some hacks, fixes some bugs
This commit is contained in:
@@ -64,7 +64,8 @@ static gboolean on_popup_window_focus_out(
|
||||
// PUBLIC FUNCTIONS
|
||||
//
|
||||
GtkWidget* wintc_dpa_create_popup(
|
||||
GtkWidget* owner
|
||||
GtkWidget* owner,
|
||||
gboolean enable_composition
|
||||
)
|
||||
{
|
||||
GtkWidget* popup;
|
||||
@@ -77,10 +78,6 @@ GtkWidget* wintc_dpa_create_popup(
|
||||
{
|
||||
popup = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||
|
||||
gtk_window_set_decorated(
|
||||
GTK_WINDOW(popup),
|
||||
FALSE
|
||||
);
|
||||
gtk_window_set_type_hint(
|
||||
GTK_WINDOW(popup),
|
||||
GDK_WINDOW_TYPE_HINT_POPUP_MENU
|
||||
@@ -106,6 +103,34 @@ GtkWidget* wintc_dpa_create_popup(
|
||||
GDK_FOCUS_CHANGE_MASK
|
||||
);
|
||||
|
||||
// If the application wants composition (eg. for shadows) we fake out
|
||||
// CSD here
|
||||
//
|
||||
if (enable_composition)
|
||||
{
|
||||
GtkWidget* fake_titlebar = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
|
||||
|
||||
// HACK: Apply CSS to force the fake titlebar to not show up as
|
||||
// Adwaita has a min-height on titlebar boxes! Blah!
|
||||
//
|
||||
wintc_widget_add_css(
|
||||
fake_titlebar,
|
||||
"* { min-height: 0px; }"
|
||||
);
|
||||
|
||||
gtk_window_set_titlebar(
|
||||
GTK_WINDOW(popup),
|
||||
fake_titlebar
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
gtk_window_set_decorated(
|
||||
GTK_WINDOW(popup),
|
||||
FALSE
|
||||
);
|
||||
}
|
||||
|
||||
// Connect signals
|
||||
//
|
||||
g_signal_connect(
|
||||
@@ -144,7 +169,11 @@ void wintc_dpa_show_popup(
|
||||
);
|
||||
gtk_widget_show_all(popup);
|
||||
|
||||
height = gtk_widget_get_allocated_height(popup);
|
||||
gtk_window_get_size(
|
||||
GTK_WINDOW(popup),
|
||||
NULL,
|
||||
&height
|
||||
);
|
||||
|
||||
gdk_window_get_origin(
|
||||
gtk_widget_get_window(owner),
|
||||
|
||||
@@ -24,7 +24,8 @@ typedef enum
|
||||
// PUBLIC FUNCTIONS
|
||||
//
|
||||
GtkWidget* wintc_dpa_create_popup(
|
||||
GtkWidget* owner
|
||||
GtkWidget* owner,
|
||||
gboolean enable_composition
|
||||
);
|
||||
void wintc_dpa_show_popup(
|
||||
GtkWidget* popup,
|
||||
|
||||
@@ -6,9 +6,6 @@
|
||||
#include "api.h"
|
||||
#include "impl-x11.h"
|
||||
|
||||
// FIXME: Remove this before release
|
||||
#define TASKBAND_ROW_HEIGHT 30
|
||||
|
||||
//
|
||||
// STRUCTURE DEFINITIONS
|
||||
//
|
||||
@@ -127,12 +124,13 @@ static void on_taskband_realized(
|
||||
)
|
||||
{
|
||||
GdkAtom cardinal_atom;
|
||||
GdkDisplay* display = gdk_display_get_default();
|
||||
GdkDisplay* display = gdk_display_get_default();
|
||||
GdkRectangle geometry;
|
||||
GdkMonitor* monitor = NULL;
|
||||
int monitor_count = gdk_display_get_n_monitors(display);
|
||||
gint height_request = 0;
|
||||
GdkMonitor* monitor = NULL;
|
||||
int monitor_count = gdk_display_get_n_monitors(display);
|
||||
GdkAtom net_wm_strut_partial_atom;
|
||||
int screen_bottom = 0;
|
||||
int screen_bottom = 0;
|
||||
|
||||
cardinal_atom =
|
||||
gdk_atom_intern_static_string("CARDINAL");
|
||||
@@ -165,19 +163,25 @@ static void on_taskband_realized(
|
||||
|
||||
gdk_monitor_get_geometry(monitor, &geometry);
|
||||
|
||||
gtk_window_set_default_size(
|
||||
GTK_WINDOW(self),
|
||||
gtk_widget_get_size_request(
|
||||
self,
|
||||
NULL,
|
||||
&height_request
|
||||
);
|
||||
|
||||
gtk_widget_set_size_request(
|
||||
self,
|
||||
geometry.width,
|
||||
TASKBAND_ROW_HEIGHT
|
||||
height_request
|
||||
);
|
||||
gtk_window_move(
|
||||
GTK_WINDOW(self),
|
||||
geometry.x,
|
||||
geometry.y + geometry.height - TASKBAND_ROW_HEIGHT
|
||||
geometry.y + geometry.height - height_request
|
||||
);
|
||||
|
||||
struts.bottom =
|
||||
screen_bottom - (geometry.y + geometry.height) + TASKBAND_ROW_HEIGHT;
|
||||
screen_bottom - (geometry.y + geometry.height) + height_request;
|
||||
struts.bottom_start_x = geometry.x;
|
||||
struts.bottom_end_x = geometry.x + geometry.width;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user